使用的数据库是mongodb数据库,mongodb的数据库表创建就不一一介绍了,可自行查询资料如何创建数据库。
使用的数据库可视化工具是mongodb compass
使用的接口工具是postman
这里使用的egg项目脚手架模板是simple版本,详细创建项目流程可在eggjs官网查阅
1、首先安装egg-mongoose
npm i egg-mongoose
2、在config/config.default.js,配置数据库的地址,以及一些请求跨域的配置
config.mongoose = {
client: {
url: 'mongodb://localhost:27017/codemodel',
options: {
useUnifiedTopology: true,
},
}
};
// EGG 安全配置
config.security = {
csrf: {
enable: false
}
};
config.cors = {
origin: '*',
allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH,OPTIONS',
credentials: true
};
3、在config/plugin.js,配置egg-mongoose
/** @type Egg.EggPlugin */
module.exports = {
mongoose: {
enable: true,
package: 'egg-mongoose'
},
};
4、在config/code.js,配置一些请求返回码
module.exports={
DEFAULT: {
DEMO: 100001
},
}
在config/config.default.js配置
const code = require('./code.js')
config.CODE = code;
5、在app/extend/context.js,编写一些扩展方法
// 在 app/extend/context.js 文件中定义扩展方法
module.exports = {
success(data) {
this.body = {
code: 0,
message: 'success',
data,
};
},
error(code, message) {
this.body = {
code,
message,
};
},
};
6、创建数据表model
app/model/collectdbs.js
module.exports = app => {
const mongoose = app.mongoose;
const Schema = mongoose.Schema;
const CollectSchema = new Schema({
filePath: { type: String },
fileName: { type: String },
fileCreateAt: { type: String },
fileUrl: { type: String },
account: { type: String },
collectName: { type: String },
fileUpdateAt:{ type: String },
});
return mongoose.model('Collectdbs', CollectSchema,'collectdbs');
}
7、编写service
app/service/collectdbs.js
这里使用了lodash,安装lodash
npm i lodash
const { Service } = require('egg')
const _ = require('lodash')
class CodeModelService extends Service {
//查
async list() {
const { ctx } = this;
return ctx.model.Collectdbs.find()
}
//更新
async update(params) {
const _params = _(params).omitBy(_.isUndefined).omitBy(_.isNull).value();
console.log(params)
return this.ctx.model.Collectdbs.updateOne(
{
_id: params._id
},
_params
);
}
//删除
async delete(params) {
return this.ctx.model.Collectdbs.deleteOne(params);
}
//新增
async create(params) {
return this.ctx.model.Collectdbs.insertMany(params);
}
}
module.exports = CodeModelService;
8、编写对应controller
app/controller/collectdbs.js
这里用到了dayjs,安装dayjs
npm i dayjs
const { Controller } = require('egg');
const dayjs = require('dayjs');
class CollectdbsModel extends Controller {
//查
async list() {
const { ctx, service, config } = this;
try {
const result = await service.collectdbs.list();
ctx.success(result);
} catch (error) {
ctx.error({
code: config.CODE.DEFAULT.DEMO,
message: error
})
}
}
//更新
async update(){
const { ctx, service, config } = this;
const _id = ctx.request.body?._id;
const collectName = ctx.request.body?.collectName;
const updateTime = dayjs().format('YYYY-MM-DD HH:mm:ss');
const params={
_id,
collectName,
fileUpdateAt:updateTime
}
try {
const result = await service.collectdbs.update(params);
ctx.success(result);
} catch (error) {
ctx.error({
code: config.CODE.DEFAULT.DEMO,
message: error
})
}
}
//删除
async delete(){
const { ctx, service, config } = this;
const _id = ctx.request.body?._id;
try {
await service.collectdbs.delete({_id});
ctx.success({});
} catch (error) {
ctx.error({
code: config.CODE.DEFAULT.DEMO,
message: error
});
}
}
//创建
async create(){
const { ctx, service, config } = this;
const {collectName,fileName,account,fileUrl,filePath}=ctx.request.body;
const updateTime = dayjs().format('YYYY-MM-DD HH:mm:ss');
const params={
collectName,fileName,account,fileUrl,filePath,fileCreateAt:updateTime,fileUpdateAt:updateTime
}
try {
const result = await service.collectdbs.create(params);
ctx.success(result);
} catch (error) {
ctx.error({
code: config.CODE.DEFAULT.DEMO,
message: error
});
}
}
}
module.exports = CollectdbsModel;
9、编写对应的router.js
app/router.js
/**
* @param {Egg.Application} app - egg application
*/
module.exports = app => {
const { router, controller } = app;
router.get('/collectdbs/list', controller.collectdbs.list);
router.post('/collectdbs/update',controller.collectdbs.update)
router.post('/collectdbs/delete',controller.collectdbs.delete)
router.post('/collectdbs/create',controller.collectdbs.create)
};
10、运行项目
npm run dev
11、效果展示
新增数据
查找数据
删除数据
删除_id为65efc1b63ecbf05aacf9378b
更新数据
修改_id为65efcc3746e1b1e601536e00