我一直致力于一个实时的Q& A应用,用户可以在讨论中创建讨论,他们可以提出问题,然后在问题中添加评论。
然而,目前我仍然坚持问题部分。我可以成功创建一个讨论,以及一个与discussionID讨论相关的问题(它作为objectID(discussionID)存储在MongoDB中。
我试图获得与讨论具有相同ID的问题,并将它们传递给Jade,以便我可以将它们循环到div中。
到目前为止我的代码是:
对于讨论控制器:
function getOne(req, res, next) {
Discussion.findOne({_id: req.params.id}, function onDiscussionFound(err, discussion) {
if(!discussion) {
res.status(404).send("Discussion not found");
}
console.log(discussion);
// we return the json version with cleaned up model to the user
//res.send(discussion.toJSON());
var Questions = Question.find({discussionID: discussion.id}, function(err, data){
console.log(data);
});
//console.log(Questions);
res.render('discussion', { title: discussion.title, description: discussion.description, user: req.user, discussionID: discussion.id, questions: Questions});
});
}
所以我遇到问题的部分是:
var Questions = Question.find({discussionID: discussion.id}, function(err, data){
console.log(data);
});
discussionID是我的Robomongo集合问题中的一个字段,而discussion.id当然是讨论的ID。
我的渲染可能有问题,我不确定,因为我对此很新。
在我的Jade discussion.jade文件中,我尝试检索这样的问题:
if questions
each question in questions
p= question
但这给了我一个永无止境的回应,看起来像这样:
[object Object]
[object Object]
function model(doc, fields, skipId) { if (!(this instanceof model)) { return new model(doc, fields, skipId); } Model.call(this, doc, fields, skipId); }
[object Object]
find
[object Object]
[object Object]
[object Object]
function () { var args = Array.prototype.slice.call(arguments); _this.wrap(name, fn, context, args); }
function () { var args = Array.prototype.slice.call(arguments); _this.wrap(name, fn, context, args); }
function () { var args = Array.prototype.slice.call(arguments); _this.wrap(name, fn, context, args); }
function () { var args = Array.prototype.slice.call(arguments); _this.wrap(name, fn, context, args); }
function () { var a
等等......
我的console.log数据返回到目前为止已经提出的3个问题。
答案 0 :(得分:2)
Question.find是一个异步调用,因此你需要等到它执行并使用返回的数据。您的问题以呈现视图:
var Questions = Question.find({discussionID: discussion.id}, function(err, data){
console.log(data);
res.render('discussion', { title: discussion.title, description: discussion.description, user: req.user, discussionID: discussion.id, questions: data});
});
//console.log(Questions);