Meteor.publish 服务器上不显示客户端上的新文档
Meteor.publish on server doesn't show new documents on client
问题是服务器上的下一个代码:
Meteor.publish(null , function() {
let events = [];
Groups.find({participants: this.userId}).forEach(function(item) {
events.push(item.latestEvent);
});
return Events.find({_id: {$in: events}});
});
不提供在客户端上查看新文档的可能性> Events.find().fetch()
无需重新加载页面。
两个集合都在 lib
文件夹中:
Groups = new Mongo.Collection('groups');
Events = new Mongo.Collection('events');
我很确定问题出在反应性数据源中,但仍然无法解决。
感谢您的帮助!
是的,你是对的:只有事件集合是反应性的。有一个简单的方法可以通过使用 publish-composite 包来解决它:
Meteor.publishComposite(null, {
find(){
return Groups.find({participants: this.userId});
},
children: [{
find(group){
return Events.find({_id: {$in: group.latestEvent}});
}
}]
});
但此解决方案有一个缺点:群组文档也会被发布。因此,您可能应该从中排除一些字段。
问题是服务器上的下一个代码:
Meteor.publish(null , function() {
let events = [];
Groups.find({participants: this.userId}).forEach(function(item) {
events.push(item.latestEvent);
});
return Events.find({_id: {$in: events}});
});
不提供在客户端上查看新文档的可能性> Events.find().fetch()
无需重新加载页面。
两个集合都在 lib
文件夹中:
Groups = new Mongo.Collection('groups');
Events = new Mongo.Collection('events');
我很确定问题出在反应性数据源中,但仍然无法解决。
感谢您的帮助!
是的,你是对的:只有事件集合是反应性的。有一个简单的方法可以通过使用 publish-composite 包来解决它:
Meteor.publishComposite(null, {
find(){
return Groups.find({participants: this.userId});
},
children: [{
find(group){
return Events.find({_id: {$in: group.latestEvent}});
}
}]
});
但此解决方案有一个缺点:群组文档也会被发布。因此,您可能应该从中排除一些字段。