2016-11-21 3 views
0

Как бы один подход делает это (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'); 

Благодаря

ответ

0

сначала необходимо определить свою схему в метеора.

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

Этот пример определяет схему с несколькими простыми правилами:

  1. Мы указываем, что имя поля списка является обязательным и должен быть строкой.
  2. Мы указываем неполную сумму, это число, которое при вставке установлено в 0, если не указано иное.
  3. Мы указываем, что userId, который является необязательным, должен быть строкой, которая выглядит как идентификатор пользовательского документа.

Это довольно простой способ проверки документа со схемой. Мы можем написать:

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

Это использование пакета SimpleSchema от Aldeed? – pizzae

+0

использует простую схему, но не уверен, что это Aldeed. вы можете узнать больше об этом на странице https://guide.meteor.com/collections.html –

Смежные вопросы