前言
本文主要使用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/AddVisaOnArrival
- 请求方式: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/FindVisaOnArrival
- 请求方式: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的实现过程。