Meteor应用程序中未更新客户端数据
我有一个Meteor应用程序,发布内容如下:Meteor应用程序中未更新客户端数据,meteor,Meteor,我有一个Meteor应用程序,发布内容如下: Meteor.publish('my_items', function() { var selector = {owner_id: this.userId}; var items = ItemOwnership.find(selector, {fields: {item_id: 1}}).fetch(); var itemIds = _.pluck(items, 'item_id');
Meteor.publish('my_items', function() {
var selector = {owner_id: this.userId};
var items = ItemOwnership.find(selector, {fields: {item_id: 1}}).fetch();
var itemIds = _.pluck(items, 'item_id');
return Items.find({
_id: {$in: itemIds},
item_archived_ts: { $exists: false }
});
});
以及以下文件的订阅:
Meteor.subscribe('my_items');
应用程序允许用户向“items”集合添加项,这是通过调用服务器方法完成的。服务器上的Items集合将使用新记录更新,但客户端等效集合不显示新记录。我所做的有什么明显的错误吗,或者用什么方法来调试这个
p、 是否没有发生客户端/服务器端错误 我找到了一种使用reywood:publish composite Meteor软件包实现这一点的方法。以下是实现这一目标的发布:
Meteor.publishComposite('my_items', {
find: function () {
var selector = {owner_id: this.userId};
return ItemOwnership.find(selector, {fields: {item_id: 1}});
},
children: [
{
find: function(IOrecord){
return Items.find({
_id: IOrecord.item_id,
item_archived_ts: { $exists: false }
});
}
}
]
});
这听起来像个问题。如果修改
ItemOwnership
,它将不会响应性地更新发布到客户端的项目。使用数组而不是联接表是解决此问题的一种方法。谢谢。在这种情况下,我不能使用数组。相反,我最终使用了reywood:publish复合包来实现这一点——我将在下面发布答案。