2017-12-25 2 views
1

req.params.id을 mongoose와 함께 사용하면 정의되지 않은 값을 반환합니다. 나는 내 경로 파일이 아닌 내 app.js에 id 매개 변수를 정의했기 때문에 이것이 확실합니다.id가 별도의 파일에 정의되어있을 때 req.params.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 
+0

브라우저에서 사용중인'경로 '를 게시하거나 이것을 호출 할 수 있습니까? –

+0

이제 경로를 추가했습니다 –

+0

잘 모르겠지만'findById'는 id를 쿼리에 필요한'ObjectId'로 변환하지 않습니다. 또한 req.params.id의 값을 기록 했습니까? –

답변

4

당신이 mergeParams라는 옵션을 활성화해야 작동합니다.

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

문서 here을 참조하십시오.

관련 문제