用egg.js+mongodb简单实现CURDAPI

前言 本文主要使用egg框架和mongodb数据库,简单实现增删改查接口。
具体包括如下:

  • 链接数据库
  • 创建数据表
  • 添加数据
  • 查找数据
  • 修改数据
  • 删除数据
    搭建项目
    $ mkdir egg-example && cd egg-example $ npm init egg --type=simple $ npm i

    用egg.js+mongodb简单实现CURDAPI
    文章图片

    启动项目
    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

【用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的实现过程。

    推荐阅读