2015-07-31 3 views
2

У меня есть эта мангуста схема, я добавил updated_by и CREATED_BY, но по какой-то причине, когда я откладываю модели от клиента к серверу, эти поля не видны:Mongoose схемы не подбирая новые свойства

userSchema = mongoose.Schema({ 
      role: { 
       type: String, 
       enum: ['Admin', 'Owner', 'User'] 
      }, 
      username: { 
       type: String, 
       unique: true, 
       required: true, 
       validate: [validation.usernameValidator, 'not a valid username'] 
      }, 
      passwordHash: { 
       type: String, 
       required: true, 
       validate: [validation.passwordValidator, 'not a valid password'] 
      }, 
      email: { 
       type: String, 
       unique: true, 
       required: true, 
       validate: [validation.emailValidator, 'not a valid email address'] 
      }, 
      firstName: { 
       type: String, 
       required: false 
      }, 
      lastName: { 
       type: String, 
       required: false 
      }, 
      registered_at: { 
       type: Date, 
       default: Date.now 
      }, 
      created_by: { 
       type: String, 
       required: false 
      }, 
      updated_by: { 
       type: String, 
       required: false 
      }, 
      created_at: { 
       type: Date, 
       default: Date.now 
      }, 
      updated_at: { 
       type: Date, 
       default: Date.now 
      } 
     }, 
     { 
      autoIndex: false 
     }); 

является это обычно проблема? Должен ли я как-то перестроить что-то с Mongoose или MongoDB, чтобы они могли забрать новые свойства этой модели?

Конечно, я перезапустил сервер mongoDB, но ничего не сделал.

ответ

1

В любом случае, если вы сохраните модель пользователя, поля с фактическими значениями, показанные в MongoDB, будут теми, которые вы установили для себя при сохранении модели или в полях со значением по умолчанию, установленным в вашем userSchema.

Так, просто уточнить по этому вопросу:

address: { type: String, default: ' ' } 

будет показано в MongoDB со значением «», если не установлен конкретный адрес при сохранении вашей модели пользователя.

Но

address: String 

будет НЕ показано в MongoDB, если не установлен конкретный адрес при сохранении вашей модели пользователя.

EDIT Благодаря Мэтью для указывая это, на самом деле upsert поведение действительно следующее:

Если upsert верно и ни один документ не соответствует критериям запроса, обновление() вставляет один документ.

+0

спасибо, что дадим этот снимок –

+2

Upsert создаст новый документ, если условное обозначение не соответствует никаким документам в базе данных, что не решит его проблему вообще. Тем не менее, вы правы в том, что никакое поле не будет сохранено в базе данных, которая не имеет установленного значения и не имеет значения по умолчанию, указанного в схеме, которое является решением проблемы @AlexMills. –

+0

Это абсолютно правильно, редактирование, спасибо –

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