3

至于新的流星版本,我想了解如何禁止将带有某些单词的消息添加到集合中。

假设我正在通过:Messages.insert({message:"Holy ducking smokes", at: new Date()});

里面的代码应该是什么if (Meteor.is_server)样子才能阻止任何包含“鸭子”的条目?

4

2 回答 2

1

像这样的东西?

Messages.deny({
  insert: function(userId, doc) {
    if (doc.message.match(/\bduck\b/i)) return true;
    return false;
  }
}

如果消息包含有界词“duck”,这将拒绝客户端插入记录。显然,如果需要,您可以在那里执行其他逻辑(例如审查)。

于 2012-12-24T13:47:24.300 回答
0

我可以做到这一点的一种方法是在 中设置 a.allowMeteor.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 () { (...) },
        });
    }

但我想使用方法会是一种更好的方法,因为对服务器端和客户端都使用单个验证规则是有意义的。

于 2012-10-31T18:31:21.533 回答