前言

本文次要应用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的实现过程。