2

ここに示すように、collection2 パッケージを使用しています: https://github.com/aldeed/meteor-collection2

onlyemailがオプションではない単純なスキーマを設定しましたが、この単純さにもかかわらず、「電子メールが必要です」と主張するたびに検証が失敗します。

私のスキーマ:

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)

そして、それを確認するために、値をハードコーディングして、完全に適切な電子メール アドレスを持つユーザーを追加します。

Accounts.createUser({email: "fdfs@fdsfs.com"})

しかし、これを実行すると、特に次のような大きな例外が返されます。

メソッド 'registerUser` の呼び出し中に例外が発生しました エラー: 電子メールが必要です

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

サニタイズされ、次のようにクライアントに報告されました: メールが必要です [400]

私は何が欠けていますか?

4

1 に答える 1

5

docsでわかるように、 は、プロパティとuser.emailsを持つオブジェクトの配列です。verifiedaddress

したがって、代わりに次のようなことを試してください。

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

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

'emails.$.verified': {
    type: Boolean
},
于 2015-06-08T17:32:37.313 に答える