当前位置: 首页 > Web前端 > HTML

用egg.js+mongodb简单实现CURDAPI

时间:2023-03-27 23:07:05 HTML

前言本文主要使用egg框架和mongodb数据库简单实现增删改查接口。具体如下:linkdatabasecreatedatatableadddatalookupdatamodifydatadeletedatabuildproject$mkdiregg-example&&cdegg-example$npminitegg--type=simple$npmistartprojectnpmrundev或npmrunstart在浏览器中输入http://localhost:7001/,页面会显示helloegg,说明项目已经搭建成功链接数据库首先下载egg-mongoosenpmiegg-mongoose--saveconfigurationconfig/plugin.js'usestrict';module.exports={mongoose:{enable:true,package:"egg-mongoose"}};在config/config.default.js中“使用严格”;module.exports=appInfo=>{constconfig=exports={};//用于cookie签名密钥,应更改为您自己的并保留securityconfig.keys=appInfo.name+'_1641975352438_173';//在此处添加您的中间件配置config.middleware=[];//在此处添加您的用户配置constuserConfig={//myAppName:'蛋',};//mongoose数据库配置config.mongoose={url:'mongodb://127.0.0.1:27021/VietNamVisa',//端口号27021数据库名VietnamNamVisaoptions:{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.jsv16.13.1,LE(unified)","version":"3.7.3|5.13.14"}}}表示启动成功,mongodb安装配置方法参考添加资料.首先使用mongoose中的Schema定义数据库的schema类型和Model在app/model/visaOnArrivalModel.js中创建模型module.exports=app=>{const{mongoose}=app;const{Schema}=mongoose;constVisaOnArrivalSchema=newSchema({//订单号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},//国籍:{type:String},//护照签发日期PassportIssueDate:{type:String},//护照有效期PassportPeriodOfValidity:{type:String},//出发日期DepartureDate:{type:String},//出发城市DepartureCity:{type:String},//审批类型Type:{type:String},//审批状态Status:{type:String},//Checked:{type:Boolean}});returnmongoose.model("VisaOnArrivalModel",VisaOnArrivalSchema,"visaonarrivals")}/*注意上面的代码定义了一个名为visaonarrivals的数据表。该表的关键值名称是:tyDepartureDateDepartureCityTypeStatus键值的数据类型为字符串类型。猫鼬中合法的颜色数据类型是:*String*Number*Date*Buffer*Boolean*Mixed*ObjectId*Array*Decimal128*/inapp/service/visaOnArrivalService.js"usestrict"constService=require("egg").服务;类VisaOnArrivalService扩展服务{asyncVisaOnArrival(obj){const{ctx}=this;//存储数据//注意!!!!ctx.model.xxx中的xxx指模型文件名首字母大写constVisaOnArrivalList=newctx.model.VisaOnArrivalModel({OrderNumber:obj.OrderNumber,//NameFullName:obj.FullName,//PassportNo.PassportNo:obj.PassportNo,//出发航班号DepartureFlightNumber:obj.DepartureFlightNumber,//入境时间TimeOfEntry:obj.TimeOfEntry,//到达机场ArriveAtTheAirport:obj.ArriveAtTheAirport,//航班号FlightNumber:obj.,//英文名EnglishName:obj.FlightNumber,//性别:obj.Gender,//出生日期DateOfBirth:obj.DateOfBirth,//国籍:obj.Nationality,//护照签发日期PassportIssueDate:obj.PassportIssueDate,//护照有效期PassportPeriodOfValidity:obj.PassportPeriodOfValidity,//出发日期DepartureDate:obj.DepartureDate,//出发城市DepartureCity:obj.DepartureCity,//TypeType:obj.Type,//审批文件的状态状态:obj.Status,});//数据保存到数据库VisaOnArrivalList.save();return"添加成功"}}module.exports=VisaOnArrivalService;在app/controller/visaOnArrival.js"usestrict"constController=require('egg').Controller;classVisaOnArrivalextendsController{asyncVisaOnArrival(){const{ctx}=this//constreq=ctx.request.body复制代码constres=awaitctx.service.visaOnArrivalService.VisaOnArrival(req)//console.log(res)ctx.body={state:200,msg:res}}}module.exports=VisaOnArrivalinapp/router.js'使用严格的';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}一个添加数据的接口就完成了查询数rrifindVisa服务"OnstrictRrifindVisaService"Onservice=require("egg").Service;classFVisaOnArrivalServiceextendsService{asyncFVisaOnArrival(obj){const{ctx}=this;console.log(obj)//constres=awaitctx.model.VisaOnArrivalModel.find({ArriveAtTheAirport:obj.ArriveAtTheAirport});constres=awaitctx.model.VisaOnArrivalModel.find(obj);returnres}}module.exports=FVisaOnArrivalService;在app/controller/findVisaOnArrival.js"usestrict"constController=require('egg').Controller;classFindVisaOnArrivalextendsController{asyncVisaOnArrival(){const{ctx}=thisconstreq=ctx.request.bodyconstres=awaitctx.service.findVisaOnArrivalService.FVisaOnArrival(req)//console.log(res)ctx.body={state:200,msg:"查询成功",data:res}}}module.exports=FindVisaOnArrivalinapp/router.js'usestrict';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中的数据"usestrict"constService=require('egg').Service;classreviseServiceextendsService{asyncReviseDT(obj){const{ctx}=这个;console.log(obj)让res=awaitctx.model.VisaOnArrivalModel.findOneAndUpdate({OrderNumber:obj.OrderID},{Status:obj.Status},function(err,data){if(err){return"revisionfailed"}else{return"revisionsuccessful"}})returnres}}module.exports=reviseServiceinapp/controller/revise.js“使用严格”constController=require('egg').Controller;classreviseControllerextendsController{asyncRevise(){const{ctx}=this;constreq=ctx.request.body;constres=awaitctx.service.reviseService.ReviseDT(req);//console.log(res)if(res){ctx.body={code:200,data:"修改成功"}}else{ctx.body={code:500,data:"修改失败"}}}}module.exports=reviseControllerinapp/router.js'usestrict';module.exports=app=>{const{router,controller}=app;//修改状态router.post("/Revise",controller.revise.Revise);};接口名称:http://localhost:7001/Revise请求方式:post请求参数:{OrderNumber,Status}修改数据的接口完成删除app/service/deleteService.js中的数据"usestrict"constService=require('egg').Service;classDeleteServiceextendsService{asyncdelete(obj){const{ctx}=this;console.log(obj)letres=awaitctx.model.VisaOnArrivalModel.deleteOne({OrderNumber:obj.OrderID},function(err,data){if(err){return"删除失败"}else{return"删除成功"}})在app/controller/delete中返回res}module.exports=DeleteService。js“使用严格”constController=require('egg').Controller;classdeleteControllerextendsController{asyncDelete(){const{ctx}=this;constreq=ctx.request.body;constres=awaitctx.service.deleteService.delete(req);ctx.body={code:200,data:"删除成功"}}}module.exports=deleteControllerinapp/router.js'usestrict';module.exports=app=>{const{router,controller}=app;//删除router.post("/Delete",controller.delete.Delete);};接口名称:http://localhost:7001/Delete请求方法:Post请求参数:{OrderNumber}完成一个删除数据的接口。以上就是CURDAPI的实现过程。