[英]Passing parameters to route file
我需要查找用户的事件,但是由于无法传递用户ID来路由事件文件,所以无法检索用户。
app.js:
var Router = express.Router();
Router.use("/users/:uid/events", events);
events.js:
Router.post("/",function (req,res) {
User.findOne({
_id:req.params.uid
},function (err, foundUser) {
if(err){
res.json({success:false, message:"The user couldn't be found"});
}else{
console.log(req.params.uid);
console.log(foundUser);
var event = new Event();
event.title = req.body.title;
event.description = req.body.description;
event.save(function (err) {
if(err){
console.log(err);
}
});
foundUser.events.push(event);
}
})
});
结果是 :
uid = undefined
foundUser = null
如何将uid参数传递给events.js?
我认为这应该有效。
app.js:
var Router = express.Router();
Router.use("/users/", events);
events.js:
Router.post("/:uid/events", function (req,res) {
User.findOne({
_id:req.params.uid
},function (err, foundUser) {
if(err){
res.json({success:false, message:"The user couldn't be found"});
}else{
console.log(req.params.uid);
console.log(foundUser);
var event = new Event();
event.title = req.body.title;
event.description = req.body.description;
event.save(function (err) {
if(err){
console.log(err);
}
});
foundUser.events.push(event);
}
});
});
尽管Lazyexpert的答案是解决此问题的一种方法,但我发现了我今天一直在寻找的东西。
为了从app.js传递uid
Router.use("/users/:uid/events", events);
到另一条路由,请确保您的路由器包含{mergeParams:true}
var express = require('express');
var Router = express.Router({mergeParams:true});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.