如果它的长度为0,我试图拒绝提交一个问题。但我不太明白Meteor否认。
这是发生了什么。
我正在更新问题。它目前设置为“是”
我将其更新为“yessir”
我控制台记录如下:
Questions.deny({
update: function(userId, question) {
console.log(question.question.length);
}
});
但结果是3.似乎控制台记录正在更新的字段,而不是我正在更新它的内容。
这是一个问题,因为如果输入的内容在提交时不会检查,我该如何检查输入的长度。
有人可以启发我吗?
答案 0 :(得分:2)
查看docs,您会看到update
的第二个参数是doc
:
doc是数据库中当前版本的文档,没有建议的更新
验证question
长度的唯一方法是查看第4个参数 - modifier
。这种方法的问题是你必须检查修饰符每种可能的方式它可以被修改。从根本上说,这就是为什么允许/拒绝在所有情况下都很难实现,除了最简单的情况。
相反,我强烈建议您使用collection2来强制执行您的架构或使用方法来修改您的文档。
推荐阅读:
答案 1 :(得分:0)
Collection.deny
功能返回true
或flase
。
如果你想拒绝某些标准的更新,请按照这样的代码
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
}
});