.deny Meteor使用..无法让它工作

时间:2015-06-23 17:48:30

标签: javascript meteor permissions

如果它的长度为0,我试图拒绝提交一个问题。但我不太明白Meteor否认。

这是发生了什么。

我正在更新问题。它目前设置为“是”

我将其更新为“yessir”

我控制台记录如下:

Questions.deny({
  update: function(userId, question) {
    console.log(question.question.length);
   }
});

但结果是3.似乎控制台记录正在更新的字段,而不是我正在更新它的内容。

这是一个问题,因为如果输入的内容在提交时不会检查,我该如何检查输入的长度。

有人可以启发我吗?

2 个答案:

答案 0 :(得分:2)

查看docs,您会看到update的第二个参数是doc

  

doc是数据库中当前版本的文档,没有建议的更新

验证question长度的唯一方法是查看第4个参数 - modifier。这种方法的问题是你必须检查修饰符每种可能的方式它可以被修改。从根本上说,这就是为什么允许/拒绝在所有情况下都很难实现,除了最简单的情况。

相反,我强烈建议您使用collection2来强制执行您的架构或使用方法来修改您的文档。

推荐阅读:

答案 1 :(得分:0)

Collection.deny功能返回trueflase。 如果你想拒绝某些标准的更新,请按照这样的代码

Questions.deny({
update: function(userId, question, fields, modifier) {
// check for critera
if(fields.question.length < 0)
return true // denys update for question length less than 0
else
return false // deny = false means allow = true

}
});