2015-06-08 2 views
2

я использую пакет collection2, как показано здесь: https://github.com/aldeed/meteor-collection2Моя схема для Meteor.users не проходит проверку каждый раз, когда

Я создал простую схему, где только email не является дополнительным значением, но, несмотря на это простота проверки не выполняется каждый раз, когда утверждается, что «требуется электронная почта».

Моя схема:

Schema.UserProfile = new SimpleSchema({ 
    firstName: { 
     type: String, 
     regEx: /^[a-zA-Z-]{2,25}$/, 
     optional: true 
    }, 
    lastName: { 
     type: String, 
     regEx: /^[a-zA-Z]{2,25}$/, 
     optional: true 
    }, 
    birthday: { 
    type: Date, 
     optional: true 
    }, 
    likes: { 
     type: [String], 
     optional: true 
    } 
}) 

Schema.User = new SimpleSchema({ 
    username: { 
    type: String, 
    regEx: /^[a-z0-9A-Z_]{3,15}$/, 
      optional: true 
    }, 
    email: { 
    type: String, 
      regEx: SimpleSchema.RegEx.Email 
    }, 
    verified: { 
    type: Boolean, 
      optional: true 
    }, 
    createdAt: { 
    type: Date, 
      optional: true 
    }, 
    profile: { 
    type: Schema.UserProfile, 
    optional: true 
    }, 
    services: { 
    type: Object, 
    optional: true, 
    blackbox: true 
    } 
}) 

Я его так:

Meteor.users.attachSchema(Schema.User) 

И просто чтобы проверить это, я жёстко~d значения для добавления пользователя с абсолютно точным адресом электронной почты:

Accounts.createUser({email: "[email protected]"}) 

Но когда я запускаю это, возвращается большое исключение, в частности между:

Exception while invoking method 'registerUser` Error: Email is required

at getErrorObject <packages/aldeed:collection2/collection2.js:369:1>

Sanitized and reported to the client as: Email is required [400]

Что мне не хватает?

ответ

5

Как вы можете видеть в the docs, user.emails - это массив объектов со свойствами verified и address.

Так попробовать что-то вроде этого, вместо:

emails: { 
    type: [Object], 
    optional: true 
}, 

'emails.$.address': { 
    type: String, 
    regEx: SimpleSchema.RegEx.Email 
}, 

'emails.$.verified': { 
    type: Boolean 
}, 
+0

И потом, что я типа в 'Accounts.createUser'? Edit: Nevermind, мне не нужно ничего менять. Благодаря! – Yeats

+0

@ Выдержит то же, что и раньше. Преобразования 'createUser' и (я уверен, также) проверяет передаваемый ему объект. Проверьте [документы для дальнейшей информации] (http://docs.meteor.com/#/full/accounts_createuser) – Kriegslustig

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