Есть ли способ выборочно применять временные метки в схеме мангуста?

В настоящее время я разрабатываю схему мангуста. Схема для комментариев в блоге выглядит так:

new mongoose.Schema({
  commentedOn: {
    type: mongoose.Schema.Types.ObjectId,
    required: true
  },
  author: {
    type: String,
    required: true
  },
  contents:{
    type: String
  },
  points: {
    type: Number,
    default:0
  },
  timestamps: true
})

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


person Community    schedule 17.08.2017    source источник


Ответы (1)


Я считаю, что timestamps следует передавать во втором аргументе схемы.

Что касается вашего вопроса, единственный способ, которым я могу это сделать, - не использовать timestamps и явно объявлять ваши поля меток времени, например. createdAt и updatedAt в вашей схеме. Всякий раз, когда вы сохраняете или обновляете, вы явно устанавливаете поле updatedAt (или нет) в зависимости от ситуации.

new mongoose.Schema({
    commentedOn: { type: mongoose.Schema.Types.ObjectId, required: true },
    author: { type: String, required: true },
    contents: String,
    points: { Number, default: 0 },
    createdAt: { type: Date, default: Date.now },
    updatedAt: Date
});
person Mikey    schedule 17.08.2017
comment
Я думаю, это то, что вы сказали, но для других, чтобы было ясно, вы можете отправить updatedAt в качестве одного из значений в вашей записи обновления (и если вы возьмете updateAt из своего существующего объекта, это будет то же самое). То есть явное объявление поля updateAt перезаписывает автообновление MongoDB. - person Kyle; 07.08.2018