我在模型中的以下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
。
答案 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(...