如何在返回Sails.js中的对象之前使toJSON等待查找?

时间:2014-08-09 08:37:41

标签: javascript node.js express sails.js

我在模型中的以下toJSON中运行查找,但它返回在查找完成之前返回对象。如何才能等到查找完成后再触发返回?

toJSON: function() {
 var obj = this.toObject();
 Comment.find({
    postID: obj.id
 }).limit(2).sort('createdAt DESC').exec(function(err, comments) {
    obj.comments = comments; //this is not reflected in return obj
    if (obj.isTrue) {
        //yes
    } else {
        //no
    }
});
return obj; // obj.comments not reflected :(
}

目标是obj.comments在返回时obj

1 个答案:

答案 0 :(得分:0)

最终解决方案是在帖子和评论之间添加一个关联。

您可以在此处找到相关文档:http://sailsjs.org/#/documentation/concepts/ORM/Associations

例如,在帖子模型中添加如此属性

comments: {
  collection: 'comment',
  via: 'postID'
},

在评论模型中添加此属性

postId: {
  model: 'hacks',
  type: 'STRING',
  required: true
},

添加新文档时,将评论的postId设置为您要关联的帖子的ID。 然后在帖子控制器中,当你找到帖子添加填充像这样

.populate('comments', {
  limit: 3,
  sort: 'createdAt DESC'
}).exec(...