Проверить электронную почту из структуры вложенной схемы mongoose - PullRequest
1 голос
/ 20 мая 2019

Я пытаюсь проверить идентификатор электронной почты из структуры вложенной схемы из модель, но она показывает ошибка: -

adminSchema.path('email').validate((val) => { TypeError: Cannot read property 'validate' of undefined

Структура модели: -

var adminSchema = new mongoose.Schema({
    companyName : {
                type: String,
                required: "Company  name can't be empty.",
                required: false
                },  
    companyID:  {
                type: String,
                },              
    address :   {
                type: String,
                required: "Address can't be empty.",
                },
    contactDetails : {
                type: String,
                required: "Company contact number can't be empty.",
                },
    admin: {
                        email :     {
                                    type: String,
                                    required: "Email can't be empty.",
                                    unique: true
                                    },
                        password:   {
                                    type: String,
                                    required: "First name can't be empty."
                                    },
                        firstName : {
                                    type: String,
                                    required: "First name can't be empty."
                                    },
                        lastName : {
                                    type: String,
                                    required: "Last name can't be empty."
                                    },  
                        phoneNumber :   {
                                    type: String,
                                    required: "Reqired for further contact. Can't be empty."
                                    },
                        designation :   {
                                    type: String,
                                    required: "Designation can't be empty."
                                    },          
                        verified: { 
                                    type: Boolean, 
                                    default: false 
                                    },
                        role: String,
                        emailResetTokenn: String,
                        emailExpires: Date,
                        saltSecret: String,//this is user for encryption and decryption of password 
                        users:[{
                                email :     {
                                            type: String,
                                            required: "Email can't be empty.",
                                            unique: true
                                            },
                                password:   {
                                            type: String,
                                            required: "First name can't be empty."
                                            },
                                firstName : {
                                            type: String,
                                            required: "First name can't be empty."
                                            },
                                lastName : {
                                            type: String,
                                            required: "Last name can't be empty."
                                            },  
                                phoneNumber :   {
                                            type: String,
                                            required: "Reqired for further contact. Can't be empty."
                                            },          
                                verified: { 
                                            type: Boolean, 
                                            default: false 
                                            },
                                role: String,
                                emailResetToken: String,
                                emailExpires: Date,
                                saltSecret: String //this is user for encryption and decryption of password
                        }]  
            }                       
});

Я хочу подтвердить идентификатор электронной почты как для администратора, так и для пользователей.

Как мне это исправить?

Пытаясь выяснить, что за глупость я совершаю, но пока не могу найти

Я пытался добавить путь adminSchema.admin.path('email').validate((val) Я получаю

adminSchema.admin.path('email').validate((val) => {
                  ^
TypeError: Cannot read property 'path' of undefined

Ответы [ 2 ]

1 голос
/ 20 мая 2019

Ваш adminSchema не содержит путь к полю email, но admin.email (или admin.users.$.email в качестве подсхемы там), Mongoose имеет любой из этих путей в качестве атрибутов наЗатем экземпляр схемы.

Таким образом, добавление промежуточного программного обеспечения validate выполняется следующим образом:

adminSchema.path('admin.email').validate(...)

0 голосов
/ 20 мая 2019

поместите все схемы администратора в массив. Я не уверен, но попробуйте один раз

...