前言
本文主要使用egg框架和mongodb数据库,简单实现增删改查接口。
具体包括如下:
- 链接数据库
- 创建数据表
- 添加数据
- 查找数据
- 修改数据
- 删除数据
搭建项目$ mkdir egg-example && cd egg-example $ npm init egg --type=simple $ npm i
文章图片
启动项目npm run dev 或者 npm run start
在浏览器输入http://localhost:7001/
页面会显示 hello egg
说明项目构建成功
链接数据库首先下载egg-mongoose
npm i egg-mongoose --save
配置config/plugin.js
'use strict'; module.exports = { mongoose:{ enable:true, package:"egg-mongoose" } };
在config/config.default.js
'use strict'; module.exports = appInfo => { const config = exports = {}; // use for cookie sign key, should change to your own and keep security config.keys = appInfo.name + '_1641975352438_173'; // add your middleware config here config.middleware = []; // add your user config here const userConfig = { // myAppName: 'egg', }; //mongoose数据库配置 config.mongoose={ url:'mongodb://127.0.0.1:27021/VietNamVisa',//端口号27021数据库名VietNamVisa options:{useNewUrlParser:true,useUnifiedTopology:true},//其他配置警告解除方法 }return { ...config, ...userConfig, }; };
开启数据库打开电脑上的mongodb文件夹下的bin目录cmd
执行mongod --dbpath=存储数据的路径 --port=数据库的端口号
例如
mongod--dbpath=E:\myNode\VietNamVisa\init\app\db--port=27021
显示一坨代码结尾例类似这样
s":{"type":"Windows_NT","name":"win32","architecture":"x64","version":"10.0.19041"},"platform":"'Node.js v16.13.1, LE (unified)","version":"3.7.3|5.13.14"}}}
说明启动成功
添加数据 首先使用mongoose中的Schema定义模式类型和Model对数据库进行操作
在app/model/visaOnArrivalModel.js
创建一个模型
module.exports=app=>{
const {mongoose}=app;
const {Schema}=mongoose;
const VisaOnArrivalSchema=new Schema({
//订单号
OrderNumber:{type:String},
//姓名
FullName:{type:String},
//护照号
PassportNo:{type:String},
//出发航班号
DepartureFlightNumber:{type:String},
//入境时间
TimeOfEntry:{type:String},
//抵达机场
ArriveAtTheAirport:{type:String},
//航班号
FlightNumber:{type:String},
//英文名
EnglishName:{type:String},
//性别
Gender:{type:String},
//出生日期
DateOfBirth:{type:String},
//国籍
Nationality:{type:String},
//护照签发日期
PassportIssueDate:{type:String},
//护照有效期
PassportPeriodOfValidity:{type:String},
//离境日期
DepartureDate:{type:String},
//出发城市
DepartureCity:{type:String},
//批文类型
Type:{type:String},
//批文的状态
Status:{type:String},
//Checked:{type:Boolean}
});
return mongoose.model("VisaOnArrivalModel",VisaOnArrivalSchema,"visaonarrivals")
}
/*注以上代码
定义了一张名为visaonarrivals的数据表
该表的键值名有:
OrderNumber
FullName
PassportNo
DepartureFlightNumber
TimeOfEntry
ArriveAtTheAirport
FlightNumber
EnglishName
Gender
DateOfBirth
Nationality
PassportIssueDate
PassportPeriodOfValidity
DepartureDate
DepartureCity
Type
Status
键值的数据类型为string类型
mongoose中合法色数据类型有:
*String
*Number
*Date
*Buffer
*Boolean
*Mixed
*ObjectId
*Array
*Decimal128
*/
在app/service/visaOnArrivalService.js
"use strict"
const Service=require("egg").Service;
class VisaOnArrivalService extends Service {
async VisaOnArrival(obj){
const {ctx}=this;
//存储数据
//注意!!!!ctx.model.xxx中xxx指的是model的文件名首字母大写
const VisaOnArrivalList = new ctx.model.VisaOnArrivalModel({
OrderNumber:obj.OrderNumber,
//姓名
FullName:obj.FullName,
//护照号
PassportNo:obj.PassportNo,
//出发航班号
DepartureFlightNumber:obj.DepartureFlightNumber,
//入境时间
TimeOfEntry:obj.TimeOfEntry,
//抵达机场
ArriveAtTheAirport:obj.ArriveAtTheAirport,
//航班号
FlightNumber:obj.,
//英文名
EnglishName:obj.FlightNumber,
//性别
Gender:obj.Gender,
//出生日期
DateOfBirth:obj.DateOfBirth,
//国籍
Nationality:obj.Nationality,
//护照签发日期
PassportIssueDate:obj.PassportIssueDate,
//护照有效期
PassportPeriodOfValidity:obj.PassportPeriodOfValidity,
//离境日期
DepartureDate:obj.DepartureDate,
//出发城市
DepartureCity:obj.DepartureCity,
//类型
Type:obj.Type,
//批文的状态
Status:obj.Status,
});
// 数据保存到数据库
VisaOnArrivalList.save();
return "添加成功"
}}
module.exports=VisaOnArrivalService;
在app/controller/visaOnArrival.js
"use strict"
const Controller=require('egg').Controller;
class VisaOnArrival extends Controller {
async VisaOnArrival(){
const {ctx}=this
//const req=ctx.request.body
const res=await ctx.service.visaOnArrivalService.VisaOnArrival(req)
//console.log(res)
ctx.body={
state:200,
msg:res
}
}
}
module.exports=VisaOnArrival
在app/router.js
'use strict';
module.exports = app => {
const { router, controller } = app;
//添加数据
router.post("/AddVisaOnArrival",controller.visaOnArrival.VisaOnArrival);
};
- 接口名:http://localhost:7001/AddVisa...
- 请求方式:post
- 请求参数:{OrderNumber,FullName, PassportNo, DepartureFlightNumber, TimeOfEntry, ArriveAtTheAirport, FlightNumber,EnglishName, Gender, DateOfBirth,Nationality,PassportIssueDate, PassportPeriodOfValidity,DepartureDate,Type,Status}
一个添加数据的接口就完成了
"use strict"
const Service=require("egg").Service;
class FVisaOnArrivalService extends Service {
async FVisaOnArrival(obj){
const {ctx}=this;
console.log(obj)
//const res =await ctx.model.VisaOnArrivalModel.find({ArriveAtTheAirport:obj.ArriveAtTheAirport});
const res =await ctx.model.VisaOnArrivalModel.find(obj);
return res
}
}
module.exports=FVisaOnArrivalService;
在app/controller/findVisaOnArrival.js
"use strict"
const Controller=require('egg').Controller;
class FindVisaOnArrival extends Controller {
async VisaOnArrival(){
const {ctx}=this
const req=ctx.request.body
const res=await ctx.service.findVisaOnArrivalService.FVisaOnArrival(req)
//console.log(res)
ctx.body={
state:200,
msg:"查询成功",
data:res
}
}
}
module.exports=FindVisaOnArrival
在app/router.js
'use strict';
module.exports = app => {
const { router, controller } = app;
//查询数据
router.post("/FindVisaOnArrival",controller.findVisaOnArrival.VisaOnArrival);
};
- 接口名:http://localhost:7001/FindVis...
- 请求方式:post
- 请求参数:{OrderNumber,FullName,PassportNo, DepartureFlightNumber, TimeOfEntry, ArriveAtTheAirport, FlightNumber,EnglishName, Gender, DateOfBirth,Nationality,PassportIssueDate, PassportPeriodOfValidity,DepartureDate,Type,Status}
一个查询数据的接口就完成了
"use strict"
const Service=require('egg').Service;
class reviseService extends Service {
async ReviseDT(obj){
const {ctx}=this;
console.log(obj)
let res=await ctx.model.VisaOnArrivalModel.findOneAndUpdate({OrderNumber:obj.OrderID},{Status:obj.Status},function(err,data){
if(err){
return "修改失败"
}else{
return "修改成功"
}
})
return res
}
}
module.exports=reviseService
在app/controller/revise.js
"use strict"
const Controller=require('egg').Controller;
class reviseController extends Controller {
async Revise(){
const {ctx}=this;
const req=ctx.request.body;
const res=await ctx.service.reviseService.ReviseDT(req);
//console.log(res)
if(res){
ctx.body={
code:200,
data:"修改成功"
}
}else{
ctx.body={
code:500,
data:"修改失败"
}
}}
}
module.exports=reviseController
在app/router.js
'use strict';
module.exports = app => {
const { router, controller } = app;
//修改状态
router.post("/Revise",controller.revise.Revise);
};
- 接口名:http://localhost:7001/Revise
- 请求方式:post
- 请求参数:{OrderNumber,Status}
- 一个修改数据的接口就完成了
"use strict"
const Service=require('egg').Service;
class DeleteService extends Service {
async delete(obj){
const {ctx}=this;
console.log(obj)
let res=await ctx.model.VisaOnArrivalModel.deleteOne({OrderNumber:obj.OrderID},function(err,data){
if(err){
return "删除失败"
}else{
return "删除成功"
}
})
return res}
module.exports= DeleteService
在app/controller/delete.js
"use strict"
const Controller=require('egg').Controller;
class deleteController extends Controller {
async Delete(){
const {ctx}=this;
const req=ctx.request.body;
const res=await ctx.service.deleteService.delete(req);
ctx.body={
code:200,
data:"删除成功"
}
}
}
module.exports=deleteController
【用egg.js+mongodb简单实现CURDAPI】在app/router.js
'use strict';
module.exports = app => {
const { router, controller } = app;
//删除
router.post("/Delete",controller.delete.Delete);
};
- 接口名:http://localhost:7001/Delete
- 请求方式:post
- 请求参数:{OrderNumber}
一个删除数据的接口就完成了。
以上就是CURDAPI的实现过程。
推荐阅读
- 前端|ES6语法新特性
- JavaScript|Jquery对象、Jquery选择器、Jquery Dom操作及事件
- 前端|ES6新特性总结
- JavaScript|JavaScript — 对象创建模式与继承模式
- JavaScript|JavaScript — 线程机制与事件机制
- javascript|ES6新特性(上)——let及const、解构赋值、模板字符串、Symbol
- JavaScript|ES6新特性总结(2)解构赋值、模板字符串、Symbol
- 运维|Zabbix 图形显示中文乱码解决方法
- JavaScript|JavaScript 自定义对象