我想允许用户以多种方式更新集合。
允许用户更新和进行不同检查的最佳方法是什么?
我想做这样的事情:
Articles.allow({
update: function (userId, doc, fields, modifier) {
if (modifier.$push.savedBy === Meteor.userId()) {
console.log('User is saving an article.');
return true;
}
if (Meteor.userId() && Math.abs(modifier.$inc.score) === 1) {
console.log('User ALLOWED to vote on the article' + doc.title);
return true;
} else {
console.log('User DISALLOWED from updating the article' + doc.title);
return false;
}
}
});
除了编写方法之外还有其他方法吗?
答案 0 :(得分:2)
我不确定我是否在回答您的问题,但您可以针对同一个集合进行多次allow
和deny
回调:
Articles.allow({
update: function(userId, doc, fields, modifier) {
return (modifier.$push != null) && modifier.$push.savedBy === userId;
}
});
Articles.allow({
update: function(userId, doc, fields, modifier) {
return (userId != null) && (modifier.$inc != null) && (Math.abs(modifier.$inc.score) === 1);
}
});
逻辑的工作原理如下:如果{{1>}回调的任何返回allow
,true
回调的无返回deny
,然后操作将成功。