Meteor中的MongoDB文档验证?

时间:2016-11-21 02:37:46

标签: mongodb meteor

如何做到这一点(https://docs.mongodb.com/v3.2/core/document-validation/):

db.createCollection( "contacts",
  { validator: { $or:
    [
       { phone: { $type: "string" } },
       { email: { $regex: /@mongodb\.com$/ } },
       { status: { $in: [ "Unknown", "Incomplete" ] } }
    ]
  }
} )

在此:

// database.js
import { Mongo } from 'meteor/mongo';

export const Test = new Mongo.Collection('Test');

由于

1 个答案:

答案 0 :(得分:0)

首先需要在meteor中定义架构。

Lists.schema = new SimpleSchema({
  name: {type: String},
  incompleteCount: {type: Number, defaultValue: 0},
  userId: {type: String, regEx: SimpleSchema.RegEx.Id, optional: true}
});

此示例使用一些简单的规则定义架​​构:

  1. 我们指定列表的名称字段是必需的,并且必须是a 字符串。
  2. 我们指定incompleteCount是一个数字,插入时是 如果没有另外指定,则设置为0.
  3. 我们指定userId是可选的,必须是一个字符串 看起来像用户文档的ID。
  4. 使用模式验证文档非常简单。我们可以写:

    const list = {
      name: 'My list',
      incompleteCount: 3
    };
    
    Lists.schema.validate(list);
    

    在这种情况下,由于列表根据模式有效,validate()行将运行没有问题。但是,如果我们写道:

    const list = {
      name: 'My list',
      incompleteCount: 3,
      madeUpField: 'this should not be here'
    };
    
    Lists.schema.validate(list);
    

    然后validate()调用将抛出ValidationError,其中包含有关列表文档错误的详细信息。