Как обновить MongoDB созданный на дату - PullRequest
0 голосов
/ 13 сентября 2018

Я пытаюсь обновить автоматически добавленную дату создания на записи прямо сейчас.

Вот код, который я использую:

Document.findOneAndUpdate({_id: docId}, {createdAt: new Date()}, function(err, updated) {});

Он работает в моей среде разработки, но не на сервере. Он не возвращает ошибку, но не обновляет запись, просто возвращает неизмененную запись.

Я попытался отформатировать его с помощью новой функции Date (). ToISOnew Date (). ToISOString () или .toGMTString (), но оба они работают только в среде разработчика. У обоих есть узел 6.10, но на сервере установлен mongo 3.4.4, а у разработчика - mongo 3.2.10.

Если я добавлю еще одно поле для обновления (второй сегмент), это поле будет обновлено нормально, но созданный элемент останется неизменным.

1 Ответ

0 голосов
/ 14 сентября 2018

Автоматически createdAt и updatedAt поля заполняются mongoose с использованием опции timestamps как

const schema = new Schema({
  // Your schema...
}, {
  timestamps: { createdAt: true, updatedAt: false }
})

Если вы посмотрите на исходный код , вы увидите, что createdAt исключен из обновлений. Однако довольно легко изменить вашу схему соответствующим образом.

const schema = mongoose.Schema({
  name: String,
  createdAt: { type: Date, default: Date.now }
});

const Test = mongoose.model('test', schema);

const john = await Test.create({name: 'John Doe'});
console.log(john);

const updatedJohn = await Test.findOneAndUpdate({name: 'John Doe'}, { createdAt: Date.now() });
console.log(updatedJohn);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...