2016-05-12 63 views
2

我一直在做一个实时Q &一个应用程序,用户可以在讨论中创建讨论,他们可以提问问题,然后给问题添加注释。在Jade中循环显示Mongodb的数据

但是,此刻我被困在问题部分。我可以成功创建一个讨论,并通过讨论ID(它存储在MongoDB中作为objectID(discussionID))与讨论关联的问题。

我试图获得与ID相同的问题讨论中,并传递给玉,所以我可以循环他们的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。

这可能是我的渲染问题,我不确定,因为我对此很陌生。

在我玉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 

等等on ...

我的console.log数据返回到目前为止提出的3个问题。

回答

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); 
+0

谢谢!真的,我一直在这个鬼混几天,答案很简单! –

+0

不用担心,你只是套住猫鼬模型的每种方法,哈哈 – Michael

+0

有很多东西要学习这个问题哈哈 –