如何允许不同的更新 - Meteor collection.allow

时间:2014-03-31 01:04:54

标签: javascript collections meteor

我想允许用户以多种方式更新集合。

允许用户更新和进行不同检查的最佳方法是什么?

我想做这样的事情:

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;
    }
  }
});

除了编写方法之外还有其他方法吗?

1 个答案:

答案 0 :(得分:2)

我不确定我是否在回答您的问题,但您可以针对同一个集合进行多次allowdeny回调:

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>}回调的任何返回allowtrue回调的返回deny,然后操作将成功。