У меня есть Express API, в котором у меня есть следующий запрос Mongoose, который извлекает сообщения из базы данных, а затем я хочу преобразовать метку времени из базы данных (объект Date ()) в строку относительного времени.
Как видите, я пытаюсь добавить свойство time
, которое имеет эту строку в качестве значения, к объекту posts с использованием Array.Map.
Это, похоже, работает, поскольку ведение журнала items[0].time
вконсоль возвращает правильное значение (см. комментарий в коде).
ОДНАКО!при отправке объекта обратно с помощью res.json свойство time
отсутствует в нем.
Я думал, что это может быть проблема с кэшем на стороне клиента, но при добавлении другого значения в res.json
новоеЗначение отправляется вместе с сообщениями просто отлично.
Post.find({}, 'author text timestamp')
.sort({ _id: -1 })
.populate({ path: 'author', select: 'username' })
.exec(function(error, posts) {
if (error) {
console.error(error)
}
items = posts.map(function(item) {
item.time = moment(item.timestamp).fromNow()
return item
})
console.log('Relative date:' + items[0].time) // This logs: "Relative date:an hour ago"
res.json({
posts: items
})
/*
Response:
posts: {
0: {
author: {_id: "5c98f40f793edf61bcc94b4d", username: "Admin"},
text: "Why",
timestamp: "2019-04-04T15:46:36.142Z",
_id: "5ca626dc45734a2612acbcd2"
}
}
*/
})
Это проблема с кэшем на сервере или что-то уникальное для объектов Mongoose, о которых я не знаю?
Заранее спасибоза помощь.