Javascript 猫鼬:可以';t按ID检索文档-错误404
我试图用mongoose从MongoDB检索对象,但收到错误404Javascript 猫鼬:可以';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');
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
检索一篇文章时,它才不起作用。你能发送代码说明如何检索所有博客吗