前言
本文次要应用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 securityconfig.keys = appInfo.name + '_1641975352438_173';// add your middleware config hereconfig.middleware = [];// add your user config hereconst 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的实现过程。