2017-12-25 18 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パラメータにアクセスできるように、この問題を解決する方法はありますか?

EDIT: 私は私のブラウザで使用パス:あなたがmergeParamsというオプションを有効にする必要があり、この作業では

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

ブラウザで使用している 'path'を投稿したり、これを呼び出すテストをすることはできますか? –

+0

パスが今追加されました –

+0

わかりませんが、 'findById'はidを' ObjectId'にキャストしないと思います。これはクエリで必要です。また、req.params.idの値をログに記録しましたか? –

答えて

4

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

ドキュメントhereを参照してください。

関連する問題