前言
本文主要使用egg框架和mongodb數(shù)據(jù)庫为障,簡單實現(xiàn)增刪改查接口长捧。具體包括如下:
- 鏈接數(shù)據(jù)庫
- 創(chuàng)建數(shù)據(jù)表
- 添加數(shù)據(jù)
- 查找數(shù)據(jù)
- 修改數(shù)據(jù)
- 刪除數(shù)據(jù)
搭建項目
$ 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
說明項目構(gòu)建成功
鏈接數(shù)據(jù)庫
首先下載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數(shù)據(jù)庫配置
config.mongoose={
url:'mongodb://127.0.0.1:27021/VietNamVisa',//端口號27021數(shù)據(jù)庫名VietNamVisa
options:{useNewUrlParser:true,useUnifiedTopology:true},//其他配置警告解除方法
}
return {
...config,
...userConfig,
};
};
開啟數(shù)據(jù)庫
打開電腦上的mongodb文件夾下的bin目錄cmd
執(zhí)行mongod --dbpath=存儲數(shù)據(jù)的路徑 --port=數(shù)據(jù)庫的端口號
例如
mongod --dbpath=E:\myNode\VietNamVisa\init\app\db --port=27021
顯示一坨代碼結(jié)尾例類似這樣
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"}}}
說明啟動成功
關(guān)于mongodb安裝和配置的方法請參考
添加數(shù)據(jù)
首先使用mongoose中的Schema定義模式類型和Model對數(shù)據(jù)庫進(jìn)行操作
在app/model/visaOnArrivalModel.js
創(chuàng)建一個模型
module.exports=app=>{
const {mongoose}=app;
const {Schema}=mongoose;
const VisaOnArrivalSchema=new Schema({
//訂單號
OrderNumber:{type:String},
//姓名
FullName:{type:String},
//護(hù)照號
PassportNo:{type:String},
//出發(fā)航班號
DepartureFlightNumber:{type:String},
//入境時間
TimeOfEntry:{type:String},
//抵達(dá)機(jī)場
ArriveAtTheAirport:{type:String},
//航班號
FlightNumber:{type:String},
//英文名
EnglishName:{type:String},
//性別
Gender:{type:String},
//出生日期
DateOfBirth:{type:String},
//國籍
Nationality:{type:String},
//護(hù)照簽發(fā)日期
PassportIssueDate:{type:String},
//護(hù)照有效期
PassportPeriodOfValidity:{type:String},
//離境日期
DepartureDate:{type:String},
//出發(fā)城市
DepartureCity:{type:String},
//批文類型
Type:{type:String},
//批文的狀態(tài)
Status:{type:String},
//Checked:{type:Boolean}
});
return mongoose.model("VisaOnArrivalModel",VisaOnArrivalSchema,"visaonarrivals")
}
/*注以上代碼
定義了一張名為visaonarrivals的數(shù)據(jù)表
該表的鍵值名有:
OrderNumber
FullName
PassportNo
DepartureFlightNumber
TimeOfEntry
ArriveAtTheAirport
FlightNumber
EnglishName
Gender
DateOfBirth
Nationality
PassportIssueDate
PassportPeriodOfValidity
DepartureDate
DepartureCity
Type
Status
鍵值的數(shù)據(jù)類型為string類型
mongoose中合法色數(shù)據(jù)類型有:
* 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;
//存儲數(shù)據(jù)
//注意O伞!4帷哑子!ctx.model.xxx中xxx指的是model的文件名首字母大寫
const VisaOnArrivalList = new ctx.model.VisaOnArrivalModel({
OrderNumber:obj.OrderNumber,
//姓名
FullName:obj.FullName,
//護(hù)照號
PassportNo:obj.PassportNo,
//出發(fā)航班號
DepartureFlightNumber:obj.DepartureFlightNumber,
//入境時間
TimeOfEntry:obj.TimeOfEntry,
//抵達(dá)機(jī)場
ArriveAtTheAirport:obj.ArriveAtTheAirport,
//航班號
FlightNumber:obj.,
//英文名
EnglishName:obj.FlightNumber,
//性別
Gender:obj.Gender,
//出生日期
DateOfBirth:obj.DateOfBirth,
//國籍
Nationality:obj.Nationality,
//護(hù)照簽發(fā)日期
PassportIssueDate:obj.PassportIssueDate,
//護(hù)照有效期
PassportPeriodOfValidity:obj.PassportPeriodOfValidity,
//離境日期
DepartureDate:obj.DepartureDate,
//出發(fā)城市
DepartureCity:obj.DepartureCity,
//類型
Type:obj.Type,
//批文的狀態(tài)
Status:obj.Status,
});
// 數(shù)據(jù)保存到數(shù)據(jù)庫
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;
//添加數(shù)據(jù)
router.post("/AddVisaOnArrival",controller.visaOnArrival.VisaOnArrival);
};
- 接口名:http://localhost:7001/AddVisaOnArrival
- 請求方式:post
- 請求參數(shù):{OrderNumber,FullName, PassportNo, DepartureFlightNumber, TimeOfEntry, ArriveAtTheAirport, FlightNumber,EnglishName, Gender, DateOfBirth,Nationality,PassportIssueDate, PassportPeriodOfValidity,DepartureDate,Type,Status}
一個添加數(shù)據(jù)的接口就完成了
查詢數(shù)據(jù)
在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;
//查詢數(shù)據(jù)
router.post("/FindVisaOnArrival",controller.findVisaOnArrival.VisaOnArrival);
};
- 接口名:http://localhost:7001/FindVisaOnArrival
- 請求方式:post
- 請求參數(shù):{OrderNumber,FullName,PassportNo, DepartureFlightNumber, TimeOfEntry, ArriveAtTheAirport, FlightNumber,EnglishName, Gender, DateOfBirth,Nationality,PassportIssueDate, PassportPeriodOfValidity,DepartureDate,Type,Status}
一個查詢數(shù)據(jù)的接口就完成了
修改數(shù)據(jù)
在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;
//修改狀態(tài)
router.post("/Revise",controller.revise.Revise);
};
- 接口名:http://localhost:7001/Revise
- 請求方式:post
- 請求參數(shù):{OrderNumber,Status}
一個修改數(shù)據(jù)的接口就完成了
刪除數(shù)據(jù)
在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
- 請求參數(shù):{OrderNumber}
一個刪除數(shù)據(jù)的接口就完成了。
以上就是CURDAPI的實現(xiàn)過程肌割。