Node、Express、Mongoose 如何将 doc._id 从函数传递到 next() 中间件

Posted

技术标签:

【中文标题】Node、Express、Mongoose 如何将 doc._id 从函数传递到 next() 中间件【英文标题】:Node, Express, Mongoose how to pass doc._id from a function to next() middleware 【发布时间】:2016-02-01 10:35:53 【问题描述】:

路由器:

router.post('/add/someone', ctrl.func1, ctrl.func2);

控制器:

ctrl.func1 = function(req, res, next)
     // Save to db
     SomeSchemaModel(req.body.data).save(function(err, doc)
          if(!err)
               // assuming that theres no error
               // how can I pass the doc._id
               // to the next middleware
               // using the next() fucntion?
               next();
               
     




ctrl.func2 = function(req, res)
     // do something with the _id
     // from the previous func1

因为我从 ctrl.func2reqres 中查找了它,但没有来自之前的 ctrl.func1 的数据。

谢谢!

【问题讨论】:

【参考方案1】:

您可以将其附加到您的 req 对象上

ctrl.func1 = function(req, res, next)
     // Save to db
     SomeSchemaModel(req.body.data).save(function(err, doc)
          if(!err)
               // assuming that theres no error
               // how can I pass the doc._id
               // to the next middleware
               // using the next() fucntion?
               req.docId = doc._id;
               next();
               
     




ctrl.func2 = function(req, res)
     // do something with the _id
     // from the previous func1
     console.log(req.docId);

【讨论】:

将其附加在 res 上是否明智?或者我应该把它附在req上?有关系吗? 我刚刚修改了它。你应该使用req 谢谢!帮助很大。如果你能解释为什么使用 req 那就太好了!不过谢谢。 :) 现在在我看来你可以同时使用,你选择哪一个并不重要。

以上是关于Node、Express、Mongoose 如何将 doc._id 从函数传递到 next() 中间件的主要内容,如果未能解决你的问题,请参考以下文章

将图像文件从 React 前端上传到 Node/Express/Mongoose/MongoDB 后端(不工作)

您如何在 Node.js + Express + Mongoose + Jade 中处理表单验证,尤其是嵌套模型

如何通过 Node + Express + Mongoose 中的单选按钮传递布尔值?

如何使用 Node.js、Express 和 Mongoose 进行身份验证?

无法将值传递到 MongoDB,使用 Node 和 Express,Mongoose

如何使用 express .node 、 mongoose 和 ejs 删除对象