I need to find the events of a user but I can't retrieve the user since I can't pass the user id to route file of events.
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);
}
})
});
As a result :
uid = undefined
foundUser = null
How can i pass uid parameter to the events.js?
I think this should work.
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);
}
});
});
While Lazyexpert's answer is a way to solve this problem, I found what I have been exactly looking for today.
In order to pass uid from app.js
Router.use("/users/:uid/events", events);
to another route make sure that your router contains {mergeParams:true}
var express = require('express');
var Router = express.Router({mergeParams:true});
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.