Collection-Hook中的Collection Insert绕过SimpleSchema

时间:2018-03-19 21:02:15

标签: meteor simple-schema meteor-collection-hooks

我知道在Collection-Hooks上打开的问题与SimpleSchema不兼容。问题似乎是SimpleSchema在Collection-Hooks之前运行。

但是在下面的示例中,我将文档插入到完全不同的集合中,它似乎一起绕过SimpleSchema。这对我来说有点令人惊讶,因为我认为因为Logs是一个不同的集合,它会触发它自己的SimpleSchema ......但它并不像我在这里所做的那样。

有人知道允许日志在此示例中使用它的SimpleSchema的变通方法吗?

Products = new Mongo.Collection('products');

Products.after.insert((userId, doc) => {
    Logs.insert({'someinvalid': 'schema'});
    // logs still gets inserted here even though it's schema should be invalid
});

Logs = new Mongo.Collection('logs');

LogsSchema = new SimpleSchema({
    'someSchema': {
        type: String
    }
});

Logs.attachSchema(LogsSchema);

1 个答案:

答案 0 :(得分:0)

我自己想通了。我需要做的就是应用检查包并使用:

Products.after.insert((userId, doc) => {
    let obj = {'someinvalid': 'schema'};

    check(obj, LogsSchema);

    Logs.insert(obj);
});

我忘了你可以使用SimpleSchema作为集合之外的验证检查^^;