我正在尝试更新我的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')});
我做错了什么?
答案 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; }
});