Javascript объект не обновляется с помощью Array.Map () - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть 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, о которых я не знаю?

Заранее спасибоза помощь.

1 Ответ

0 голосов
/ 04 апреля 2019

Мне удалось решить эту проблему с помощью Post.find (). Lean () в моем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...