1

我正在尝试更新我的流星应用程序中的集合并收到以下错误:

更新失败:403 -- 访问被拒绝。无法替换受限集合中的文档。

在服务器中,我有以下代码:

    Songs = new Meteor.Collection("songs");
    PlayLists = new Meteor.Collection('playlists');
    PlayChannels = new Meteor.Collection('playchannels');

    Meteor.publish('songs', function () {
      return Songs.find();
    });
    Meteor.publish('playlists', function () {
      return PlayLists.find();
    });
    Meteor.publish('playchannels', function () {
      return PlayChannels.find();
    });

    Meteor.startup(function () {
      Songs.allow({
        insert: function () { return true; },
        update: function () { return true; },
        remove: function () { return true; },
        fetch: function () { return true; }
      });
      PlayChannels.allow({
        insert: function () { return true; },
        update: function () { return true; },
        remove: function () { return true; },
        fetch: function () { return true; }
      });
      PlayLists.allow({
        insert: function () { return true; },
        update: function () { return true; },
        remove: function () { return true; },
        fetch: function () { return true; }
      });  
    });

我正在拨打电话如下:

    PlayChannels.update({_id: Session.get('playchannel')},{current:Session.get('current')});

我究竟做错了什么?

4

2 回答 2

0

出了问题的是电话。正确的做法是:

PlayChannels.update({
    _id: Session.get('playchannel')
}, {
    $set: {
        current: Session.get('current')
    }
})
于 2012-07-28T22:40:21.157 回答
0

allow 的 fetch 选项应该返回一个数组,而不是布尔值,或者完全删除它。我认为这应该可以解决它,因为在相同的情况下,我允许失败,因为 fetch 返回一个布尔值,因此没有考虑更新的余量。

Songs.allow({
        insert: function () { return true; },
        update: function () { return true; },
        remove: function () { return true; } 
      });
于 2012-11-18T17:04:20.457 回答