我的这个出版物有加入转换
export var Posts = new Mongo.Collection<Post>(‘posts', {
transform: function(doc) {
doc.user = Meteor.users.findOne(doc.userId);
doc.category = Categories.findOne(doc.categoryId);
return doc;
}
});
这适用于autopublish,但没有它,类别对象是未定义的,有人可以帮我理解为什么吗? 注意:是的我发布并订阅了帖子和类别,我得到的是联合用户对象,但不是类别对象。
答案 0 :(得分:0)
这是因为transform
函数不会等待加载所有其他集合。 不要依赖posts
函数中的其他集合。
当您的transform
收集数据到达客户端时,Meteor会执行Categories
功能。这可能是在findOne
同步之前,以及undefined
返回Categories
的方式。稍后,当transform
数据最终下载到客户端时,createComponent
函数不会被重新排序。我想这是因为重新评估这些功能很容易就会陷入无休止的循环中。
对于这个问题,我可以想到两个很好的解决方案:
reywood:publish-composite
包在服务器端执行json_decode
中合并它们(假设您使用React)。