node.js - 什么是嵌套快速路由的 DRY 方法

标签 node.js express mongoose

我想要一个允许获取一个人的嵌套属性的 api

router.get('/person/:id', 有趣.. router.get('/person/:id/name, 好玩... router.get('/person/:id/address, fun...

所有都是同一个 Mongoose 方案的对象。查找 person 对象的最佳方法是什么?我觉得我应该使用 router.use(/person/:id) 来查看这个人并以某种方式传递它。

最佳答案

检查 app.param() ,例如:

router.param('id', function(req, res, next, id) {
  Person.find(id, function(err, person) {
    if (err)next(err);
    else if (person) {
      req.person = person;
      next();
    } else {
      next(new Error('failed to load person'));
    }
  });
});

router.get('/person/:id', function() { /* ... */});
router.get('/person/:id/name', function() { /* ... */});
router.get('/person/:id/address', function() { /* ... */});

然后您可以从 req.person 访问您的 Person 对象。

关于node.js - 什么是嵌套快速路由的 DRY 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29144835/

相关文章:

node.js - ./node_modules/react-router-dom/node_modules/warning/warning.js 错误 : ENOENT: no such file or directory, 打开

node.js - 为 SSO 实现 oAuth 是否合适?

node.js - Angular 7/Express - POST 请求上的空响应正文

javascript - findOne 可以匹配第一个还是最后一个?

Mongodb 条件排序

javascript - Mongoose 子文档 : cannot call method call to of undefined

node.js - OpenAI GPT-3 API 错误 : "That model does not exist"

javascript - for inside 的两个 promise

node.js - 当从 Node 发送响应到 Angular 时,返回意味着什么

node.js - 如何在express中创建全局 session 变量