Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Meteor应用程序中未更新客户端数据_Meteor - Fatal编程技术网

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应用程序,发布内容如下:

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复合包来实现这一点——我将在下面发布答案。