前言

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

  • 链接数据库
  • 创建数据表
  • 添加数据
  • 查找数据
  • 修改数据
  • 删除数据

    搭建项目

    $ mkdir egg-example && cd egg-example
    $ npm init egg --type=simple
    $ npm i

    egg初始化项目目录.png

    启动项目

    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);
};

删除数据

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

栗路遥
4 声望0 粉丝