繁体   English   中英

将参数传递到路由文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM