至于新的流星版本,我想了解如何禁止将某些字词添加到集合中的消息。
假设我正在通过:Messages.insert({message:"Holy ducking smokes", at: new Date()});
if (Meteor.is_server)
中的代码应该是什么样的,它会阻止任何包含“duck”的条目?
答案 0 :(得分:1)
这样的东西?
Messages.deny({
insert: function(userId, doc) {
if (doc.message.match(/\bduck\b/i)) return true;
return false;
}
}
如果邮件包含有界词“duck”,那将拒绝客户端插入记录。显然,如果需要,你可以在那里执行其他逻辑(例如,审查)。
答案 1 :(得分:0)
我可以这样做的一种方法是在.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 () { (...) },
});
}
但我认为使用方法会更好地解决这个问题,因为对服务器端和客户端都使用单一验证规则是有意义的。