如下所示,在我的发布方法中,我需要进行两次连接,而我完成它的方式会抛出“错误:发布函数返回一个非游标数组”异常。它甚至没有反应!
是否有可能以更好的方式做到这一点,我非常注重性能,并且不希望在客户端和服务器之间进行3次返回并且强制执行,也有些软件包在阵列中的每个项目上都会访问数据库一次! !
Meteor.publish('post', function(id) {
Posts.incView(id);
parentPost= Posts.findOne({_id: id});
console.log(parentPost);
eachPost= Posts.find({_id: {$in : parentPost.childs }});
users=[parentPost.createdBy];
eachPost.forEach( function(each) { users.push(each.users)});
return [
parentPost,
eachPost,
UInfo.find({_id:{$in:users}})
];
});
答案 0 :(得分:1)
findOne()
返回一个对象,而不是光标,这就是您收到错误的原因。将findOne代码更改为:
parentPost = Posts.find({_id: id});
这样你就可以返回三个游标。