Javascript 猫鼬:可以';t按ID检索文档-错误404

Javascript 猫鼬:可以';t按ID检索文档-错误404,javascript,mongodb,express,mongoose,server,Javascript,Mongodb,Express,Mongoose,Server,我试图用mongoose从MongoDB检索对象,但收到错误404 router.get('/blogs/:id', function(req, res){ console.log('getting one blog post by id'); Blog.findOne({ _id: req.params.id }) .exec(function (err, blog) { if(err){ res.send('error occured');

我试图用mongoose从MongoDB检索对象,但收到错误404

router.get('/blogs/:id', function(req, res){
console.log('getting one blog post by id');
Blog.findOne({
   _id: req.params.id
})
   .exec(function (err, blog) {
       if(err){
           res.send('error occured');
       } else{
           console.log(blog);
           res.render('entry', {entries: entry});
       }
   })
});
错误消息:**5abe5efa06ac64917363277a未能加载资源:服务器响应的状态为404(未找到)**

数据库中存在以下文档:

{
    "_id" : ObjectId("5abe5efa06ac64917363277a"),
    "title" : "this is the first blog",
    "author" : "me",
    "body" : "this is a post",
    "comments" : [ 
        ObjectId("5ac1fe92f2eb490c3c5b1357")
    ]
}
这是我的entry.ejs视图:


由于您将
字符串
发送到
查询
,并且它需要一个ObjectId,因此您得到了错误

试试下面

解决方案1:

    import mongoose from 'mongoose';
    (or)
    var mongoose = require('mongoose');

    router.get('/blogs/:id', function(req, res){
    console.log('getting one blog post by id');
    Blog.findOne({
       _id: mongoose.Types.ObjectId(req.params.id)
    })
       .exec(function (err, blog) {
           if(err){
               res.send('error occured');
           } else{
               console.log(blog);
               res.render('entry', {entries: entry});
           }
       })
    });
var ObjectId = require('mongoose').Types.ObjectId; 

router.get('/blogs/:id', function(req, res){
console.log('getting one blog post by id');
Blog.findOne({
   _id: new ObjectId(req.params.id)
})
   .exec(function (err, blog) {
       if(err){
           res.send('error occured');
       } else{
           console.log(blog);
           res.render('entry', {entries: entry});
       }
   })
});
解决方案2:

    import mongoose from 'mongoose';
    (or)
    var mongoose = require('mongoose');

    router.get('/blogs/:id', function(req, res){
    console.log('getting one blog post by id');
    Blog.findOne({
       _id: mongoose.Types.ObjectId(req.params.id)
    })
       .exec(function (err, blog) {
           if(err){
               res.send('error occured');
           } else{
               console.log(blog);
               res.render('entry', {entries: entry});
           }
       })
    });
var ObjectId = require('mongoose').Types.ObjectId; 

router.get('/blogs/:id', function(req, res){
console.log('getting one blog post by id');
Blog.findOne({
   _id: new ObjectId(req.params.id)
})
   .exec(function (err, blog) {
       if(err){
           res.send('error occured');
       } else{
           console.log(blog);
           res.render('entry', {entries: entry});
       }
   })
});

您发送的请求是什么?此错误的可能原因可能是,您正在调用服务器端未定义的端点。您可以通过在处理程序函数try
中记录一些内容来验证您的路由是否被正确命中。在更正href之后,仍然存在相同的错误……不幸的是,所有解决方案都不起作用。我的模式定义中可能有错误吗?[现在添加到帖子]你得到这个控制台了吗<代码>通过id获取一篇博客文章你就在这里,get请求并没有被称为你发布的Sravan,但没有运气。需要注意的是,我可以检索并显示所有博客文章,只有当我试图通过
ObjectId
检索一篇文章时,它才不起作用。你能发送代码说明如何检索所有博客吗