node结合mongoose和restful规范设置通用api
2022/1/18 17:33:38
本文主要是介绍node结合mongoose和restful规范设置通用api,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
关于node结合monogoos设置restful规范的通用api接口
第一步创建server文件夹创建app.js
mkdir server cd server NUL app.js
第二步 引入mongoose,express,cors
npm i mongoose express cors
第三步 创建文件夹规范化
mkdir routes // api接口路由 => index.js mkdir plugin // 插件 db文件=> db.js mkdir models // 模块 mongoose => 模块名称.js 设置并导出Schema
第四步 在app.js中开始封装
const express = require('express'); const cors = require('cors'); const app = express(); app.use(express.json()); app.use(cors()); require('./routes/index.js')(app) ;// 引入并调用 require('./plugin/db.js')(app); // 引入并调用 app.listen(3000,()=>{ console.log('http://localhost:3000'); })
第五步 在plugin的db文件里导出mongoose配置
module.exports = app=>{ const mongoose = require('mongoose'); const dbName = 'heroAll'; // 数据库名称 mongoose.connect(`mongodb://127.0.0.1:27017/${dbName}`); }
第六步 在models文件定义Schema来操作
// 这里不进行封装 封装的话会很难写 复杂化了 const mongoose = require('mongoose'); const Schema = mongoose.Schema({ title:{type:String}, parant:{type:mongoose.Types.ObjectId,ref:"Category"} // ref进行表关联 自己表关联查询 如果是2个表或者多表可以使用aggregate() // ref里可能是小写注意一下,没有用编程软件敲。。。 }) module.exports = mongoose.model('Category',Schema) // mongoose.model('定义名字',Schema,'如果不写 默认设置第一个参数的小写形式(设置指定表名)')
第七步 配置routes里index文件 设置通用api接口
const express = require('express') module.exports = app =>{ const router = express.Router() /* * 通用接口 api CURD */ const result = { code:200, message:"请求成功" } /* ```````````````start```````````````````*/ /* 查 */ router.get('/',async(req,res)=>{ const queryOption = {} if(req.mode.modelName === 'Category') { queryOption.populate = "Category"; // 设置关联表 } // setOptions 针对特殊的接口进行处理 const mode = await req.mode.find().setOptions(queryOption).limit() res.send(...mode,...result) }) /* 增加 */ router.post('/',async (req,res)=>{ await req.mode.create(req.body) res.send(result) }) /* 修改 */ router.put('/:id',async(req,res)=>{ await req.mode.findByIdAndUpdate(req.body.id,req.body) res.send(result) }) /* 删除 */ router.delete('/:id',async(req,res)=>{ await req.mode.findByIdAndDelete(req.body.id,req.body) res.send(result) }) /* ``````````````end````````````*/ /* 1.设置中间件 来根据前端传递的名称找到文件 */ const resoureName = (req,res,next)=>{ // npm i inflection 进行单复数转换 const resoureNamePath = require('inflection').classify(req.params.resoure) // 挂载到req上 req.mode = require(__dirname+'../models'+resoureNamePath) next() // 开启下一步 必须写 } // 2.使用中间件 注入req.mode方法 app.use('/api/rest/:resoure',resoureName,router) }
这篇关于node结合mongoose和restful规范设置通用api的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-04-01got an unexpected keyword argument
- 2024-03-30维多利亚的秘密 golang入坑系统
- 2024-03-29mongodb sort by date
- 2024-03-29go swagger
- 2024-03-25mongodb cdc
- 2024-03-25how to use go in vscode
- 2024-03-22mongooseserverselectionerror: connect econnrefused ::1:27017
- 2024-03-21pymongo insert_many
- 2024-03-18projection mongodb
- 2024-03-14clickhouse-go