至于新的流星版本,我想了解如何禁止将带有某些单词的消息添加到集合中。
假设我正在通过:Messages.insert({message:"Holy ducking smokes", at: new Date()});
里面的代码应该是什么if (Meteor.is_server)
样子才能阻止任何包含“鸭子”的条目?
至于新的流星版本,我想了解如何禁止将带有某些单词的消息添加到集合中。
假设我正在通过:Messages.insert({message:"Holy ducking smokes", at: new Date()});
里面的代码应该是什么if (Meteor.is_server)
样子才能阻止任何包含“鸭子”的条目?
像这样的东西?
Messages.deny({
insert: function(userId, doc) {
if (doc.message.match(/\bduck\b/i)) return true;
return false;
}
}
如果消息包含有界词“duck”,这将拒绝客户端插入记录。显然,如果需要,您可以在那里执行其他逻辑(例如审查)。
我可以做到这一点的一种方法是在 中设置 a.allow
以Meteor.is_server
测试该值是否与我正在过滤的值不同。
它应该看起来像这样:
if (Meteor.is_server) {
Messages.allow({
insert: function (userId, doc) {
var currentMessage = Messages.findOne({message:doc.message}) ;
if (doc.message == 'duck') { //here i`m filtering stirngs
return false;
} else { return true; }
},
update: function () { (...) },
remove: function () { (...) },
});
}
但我想使用方法会是一种更好的方法,因为对服务器端和客户端都使用单个验证规则是有意义的。