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-12-24MongoDB资料:新手入门完全指南
- 2024-12-20go-zero 框架的 RPC 服务 启动start和停止 底层是怎么实现的?-icode9专业技术文章分享
- 2024-12-19Go-Zero 框架的 RPC 服务启动和停止的基本机制和过程是怎么实现的?-icode9专业技术文章分享
- 2024-12-18怎么在golang中使用gRPC测试mock数据?-icode9专业技术文章分享
- 2024-12-15掌握PageRank算法核心!你离Google优化高手只差一步!
- 2024-12-15GORM 中的标签 gorm:"index"是什么?-icode9专业技术文章分享
- 2024-12-11怎么在 Go 语言中获取 Open vSwitch (OVS) 的桥接信息(Bridge)?-icode9专业技术文章分享
- 2024-12-11怎么用Go 语言的库来与 Open vSwitch 进行交互?-icode9专业技术文章分享
- 2024-12-11怎么在 go-zero 项目中发送阿里云短信?-icode9专业技术文章分享
- 2024-12-11怎么使用阿里云 Go SDK (alibaba-cloud-sdk-go) 发送短信?-icode9专业技术文章分享