Почему вы не можете изменять данные, возвращаемые Mongoose Query (например: findById)

Когда я пытаюсь изменить любую часть данных, возвращаемых Mongoose Query, это не влияет.

Я пытался понять это примерно 2 часа вчера со всеми видами _.clone() s, используя временные переменные хранилища и т. Д. Наконец, когда я, хотя я сходил с ума, нашел решение. Поэтому я решил, что кто-то в будущем (fyuuuture!) Может иметь проблему с сохранением.

 Survey.findById(req.params.id, function(err, data){ var len = data.survey_questions.length; var counter = 0; _.each(data.survey_questions, function(sq){ Question.findById(sq.question, function(err, q){ sq.question = q; //has no effect if(++counter == len) { res.send(data); } }); }); }); 

2 Solutions collect form web for “Почему вы не можете изменять данные, возвращаемые Mongoose Query (например: findById)”

Для таких случаев, когда вам нужен простой объект JS вместо полного экземпляра модели, вы можете вызвать lean() в цепочке запросов так:

 Survey.findById(req.params.id).lean().exec(function(err, data){ var len = data.survey_questions.length; var counter = 0; _.each(data.survey_questions, function(sq){ Question.findById(sq.question, function(err, q){ sq.question = q; if(++counter == len) { res.send(data); } }); }); }); 

Таким образом, data уже являются простым JS-объектом, с которым вы можете манипулировать, как вам нужно.

Я думаю, что документация Mongoose не делает это достаточно ясно, но данные, возвращенные в запросе (хотя вы можете res.send () это), на самом деле является объектом Mongoose Document, а НЕ объектом JSON. Но вы можете исправить это одной строкой …

 Survey.findById(req.params.id, function(err, data){ var len = data.survey_questions.length; var counter = 0; var data = data.toJSON(); //turns it into JSON YAY! _.each(data.survey_questions, function(sq){ Question.findById(sq.question, function(err, q){ sq.question = q; if(++counter == len) { res.send(data); } }); }); }); 
  • Зачем использовать AJAX, когда доступны WebSockets?
  • nodejs connect не может найти статический
  • Node.js - SyntaxError: Неожиданный импорт токена
  • Как использовать переменную как имя поля в mongodb-native findOne ()?
  • Получить IP-адрес клиента в socket.io
  • bodyParser - устаревший express 4
  • Как выполнить внешнюю программу из Node.js?
  • Как установить частный модуль NPM без моего собственного реестра?
  • Как установить часовой пояс по умолчанию в node.js?
  • Как перенаправить 404 ошибки на страницу в ExpressJS?
  • Отобразить основной вид HTML?
  • Interesting Posts

    Стилирование Google Maps InfoWindow

    Что делает cltq в сборке?

    Внутренний class Java и статический вложенный class

    Найти повторяющиеся фразы – любой инструмент или регулярное выражение

    Поиск ключа связи Bluetooth в Windows 7 для двойной пары устройств на компьютере с двойной загрузкой

    DD-WRT, переадресация виртуального хоста другим именам / IP-адресам с использованием циклического шифрования

    Список OrderBy Алфавитный порядок

    Создать новый class из переменной в Java

    Установка показывает ошибку в консоли: УСТАНАВЛИВАЙТЕ НЕИСПРАВНОСТЬ ПОСТАВЩИКА КОНФЛИКТА

    Какой формат жесткого диска я использую для Mac и Windows для записи / чтения?

    Сумма совпадения $ Moongoose не совпадает с идентификатором id

    Выключение мягкой клавиатуры

    Папка отображается как один файл в Windows XP

    Как заставить MySQL правильно обрабатывать UTF-8

    разница между первичным ключом и уникальным ключом

    Давайте будем гением компьютера.