@bpGusar
*spoiler*

Почему после присвоения массив объектов становится строковым массивом в котором объекты представлены в виде строк?

есть такая функция на сервере:

function findBooks(res, data = {}, fullBookInfo = null) {
  Book.find(data, (err, books) => {
    if (err) {
      res.json(config.getRespData(true, MSG.internalErr500, err));
    } else if (fullBookInfo === "true") {
      const book = _.clone(books[0]);

      Authors.find(
        { _id: { $in: book.bookInfo.authors } },
        (authorsErr, authors) => {
          if (authorsErr) {
            book.bookInfo.authors = null;
          } else {
            book.bookInfo.authors = [...authors];
          }
        }
      );
      res.json(config.getRespData(false, null, book));
    } else {
      res.json(config.getRespData(false, null, books));
    }
  });
}


вот тут
book.bookInfo.authors = [...authors];
по идее должен присвоится массив объектов, так как authors это массив объектов, но после присвоения он становится строковым массивом в котором объекты представлены в виде строк.
["{ createdAt: 2019-10-07T11:43:18.207Z,\n  _id: 
5d666abbe480bd41207b1398,\n  authorName: 'Джордж Мартин',\n  __v: 0 }"]


в чем проблема может быть? вообще не понимаю
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ответы на вопрос 3
@vadimMalovaniy
Вы делаете запросы к MongoDB? Это все потому что БД отдает вам JSON.
Ответ написан
Комментировать
@0ffff0
Потому что json надо парсить, т.е. декодировать JSON-строку
Ответ написан
Комментировать
easimonenko
@easimonenko
Любитель
Если бы при запросе использовался Promise, то для получения массива записей нужно было бы добавить к find() .toArray().
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы