流星里的MongoDB文档验证?

问题描述:

如何将一个办法这样做(https://docs.mongodb.com/v3.2/core/document-validation/):流星里的MongoDB文档验证?

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'); 

感谢

首先需要在流星定义您的架构。

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

这个例子定义架构有一些简单的规则:

  1. 我们指定需要一个列表的名称字段必须是 字符串。
  2. 我们指定incompleteCount是一个数字,其在插入是 设置为0,如果不另外指明。
  3. 我们指定userId是可选的,必须是 看起来像用户文档的ID的字符串。

用模式验证文档非常简单。我们可以这样写:

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其中包含关于什么是错的列表文件的详细信息。

+0

这是使用Aldeed的SimpleSchema软件包吗? – pizzae

+0

它使用简单的模式,但不知道它是否是Aldeed的。您可以通过https://guide.meteor.com/collections.html阅读更多内容 –