美文网首页
express CRUD

express CRUD

作者: Jay_ZJ | 来源:发表于2019-07-27 00:05 被阅读0次

添加路由拼接

const router = express.Router({
  mergeParams: true
})

修改路由途径

将路径加上 restful风格 - rest,并添加动态路由 :resource

app.use('/admin/api/rest/:resource', router)

添加路由中间件

  • 中间件为 function(req, res, next) { do sth }
    next 是前往下一个中间件,执行相同路径的下一个方法
  • inflection
npm i inflection

使用该插件的classify方法将小写复数的英文单词改为大写单数的形式,用来将路由名改为绑定的模型名(eg: categories -> Category)

app.use('/admin/api/rest/:resource',  async (req, res, next) {
  const modelName = require('inflection').classify(req.params.resource);
  req.Model = require(`../../models/${modelName}`);
},router)

修改路由

module.exports = app => {
  const express = require('express')
  const router = express.Router({
    mergeParams: true
  })
  
  // 增
  router.post('/', async (req, res) => {
    const model = await req.Model.create(req.body)
    res.send(model)
  });
  // 查 populate - 查看父级
  router.get('/', async (req, res) => {
    const queryOptions = {};
    if (req.Model.modelName === 'Category') {
      queryOptions.populate = 'parent'
    }
    const items = await req.Model.find().setOptions(queryOptions).limit(10);
    res.send(items);
  });
  // 根据ID查
  router.get('/:id', async (req, res) => {
    const model = await req.Model.findById(req.params.id);
    res.send(model);
  });
  // 改
  router.put('/:id', async (req, res) => {
    const model = await req.Model.findByIdAndUpdate(req.params.id, req.body);
    res.send(model);
  });
  // 删
  router.delete('/:id', async (req, res) => {
    const model = await req.Model.findByIdAndDelete(req.params.id, req.body);
    res.send({
      success: true
    });
  });
  app.use('/admin/api/rest/:resource', async (req, res, next) => {
    const modelName = require('inflection').classify(req.params.resource);
    req.Model = require(`../../models/${modelName}`);
    next()
  }, router);
}

声明

本篇的作品来自于 “全栈之巅” 老师的教学视频https://www.bilibili.com/video/av51931842/,
简书https://www.jianshu.com/u/cd64ab6779d0,
将其中的重要部分做摘录,如有冒犯,请联系删除

相关文章

  • express CRUD

    添加路由拼接 修改路由途径 将路径加上 restful风格 - rest,并添加动态路由 :resource 添加...

  • nodejs mongodb

    https://zellwk.com/blog/crud-express-mongodb/ 有两个过期的地方: M...

  • 9.CRUD 系统设计

    初始化项目与安装插件 本次设计的CRUD项目开发选用 express 框架;模板引擎选择 art-template...

  • Express框架实现的简单CRUD

      准备工作假定已经做好。下面直接进入express项目的创建。 全局安装express,命令如下: 然后使用ex...

  • express写CRUD需求接口案例

    需求:实现对任务清单的CRUD接口服务 查询任务列表GET /todos 根据 ID 查询单个任务GET /tod...

  • 数据库的增删改查

    数据库的CRUD:数据库的增删改查 表的CRUD 表记录的CRUD 一、数据库的CRUD 1.增 关键词: CRE...

  • express 基础以及mongo基础

    express框架 express使用步骤 express的路由 express之next方法 express之通...

  • express解决跨域

    const express = require('express'); const app = express()...

  • SSM高级整合项目实战

    SSM-CRUD ssm:SpringMVC+Spring+MyBatis CRUD: Create(创建)Ret...

  • MyBatis入门2

    CRUD

网友评论

      本文标题:express CRUD

      本文链接:https://www.haomeiwen.com/subject/jinjrctx.html