前言
本文次要应用 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"}}}
阐明启动胜利
对于 mongodb 装置和配置的办法请参考
增加数据
首先应用 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}
一个增加数据的接口就实现了
查问数据
在 app/service/findVisaOnArrivalService.js
"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}
一个查问数据的接口就实现了
批改数据
在 app/service/reviseService.js
"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}
- 一个批改数据的接口就实现了
删除数据
在 app/service/deleteService.js
"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
在 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 的实现过程。