使用auth分支在meteor app中允许收集

时间:2012-07-28 22:09:29

标签: node.js mongodb meteor

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

更新失败: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')});

我做错了什么?

2 个答案:

答案 0 :(得分:0)

电话有什么问题。正确的方法是:

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

答案 1 :(得分:0)

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

Songs.allow({
        insert: function () { return true; },
        update: function () { return true; },
        remove: function () { return true; } 
      });