当id在单独的文件中定义时,req.params.id返回undefined

时间:2017-12-25 21:44:16

标签: node.js express mongoose

当我使用mongoose req.params.id时,它返回undefined。我很确定这是因为我在app.js中定义了id参数而不是我的路由文件。

路线档案

//NEW - Form for adding new course
router.get("/new", function(req, res) {
    // find course by id
    Course.findById(req.params.id).exec(function(err, foundCourse) {
        if(err) {
            res.redirect("back");
        } else {
            //show template with correct id
            res.render("lectures/new", {course: foundCourse});
        }
    });
});

App.js文件:

app.use("/courses/:id/lectures", lectureRoutes);

有没有办法解决这个问题,以便我可以从路由文件中访问id参数?

编辑: 我在浏览器中使用的路径:

http://localhost:7000/courses/5a4111286ae1111f541c3d88/lectures/new

1 个答案:

答案 0 :(得分:4)

要使其正常工作,您必须启用名为mergeParams的选项。

const router = express.Router({ mergeParams: true });

请参阅文档here