好的,所以我有这个函数来获取一个带有来自mongodb db的id的博客文章。
exports.blogPostFirst = function(req, res, next) {
BlogPost.findOne({
_id: '1'
}, function(err, e) {
if (err) {
return next(err);
} else {
req.content = e;
next();
}
});
res.render('blogPage', {
title: req.content.title,
content: req.content.html_content
})
};
现在由于某种原因,_id : '1'
部分不起作用,_id字段是一个字符串。
当我改为给出_id参数中一个元素from的一个值时,例如我在我的路线'route :: param'
我将函数置于第4个参数'id'之上,并将其作为“param”参数传递,它可以正常工作,但是我无法手动设置“_id”字段。< / p>
BlogPost
个对象如下:
var BlogPost = require('mongoose').model('Post');
mongoose架构是:
Schema = mongoose.Schema;
var PostSchema = new Schema({
title: String,
html_content: String,
_id: String,
});
mongoose.model('Post', PostSchema);
答案 0 :(得分:0)
好的,所以,经过几分钟的清晰思考后,我看到了我的问题。 我写的时候:
BlogPost.findOne({
_id: '1'
}, function(err, e) {
if (err) {
return next(err);
} else {
req.content = e;
next();
}
});
我将请求的.content参数设置为等于“e”(我的findOne
查询的结果),但是在findOne
函数“完成”后,req.content不会保持它的值req.content
,而不仅仅存在于该函数的环境中,所以我应该像这样调用函数:
exports.blogPostFirst = function(req, res, next) {
BlogPost.findOne({
_id: '1'
}, function(err, e) {
if (err) {
return next(err);
} else {
req.content = e;
next();
res.render('blogPage', {
title: req.content.title,
content: req.content.html_content
})
}
});
};
令我感到困惑的是,当我使用从URL传递的参数时,它一直有效...或者我找到了修复但我修复的理由很糟糕。无论如何,我有我的答案,但我不能删除它,所以我将把它留在这里