Я уверен, что это просто недоразумение, но я не могу понял это:/обновления мангуста не перезвонить мгновенно
Я пытаюсь обновить документ в MongoDB, используя мангуст на сервере узла.
Мой код выглядит следующим образом:
Message.update(searchQuery, updateQuery, function(err, response)
{
if(err) return handleError(err);
if(response) console.log(util.inspect(response));
});
Когда я первый вызвать эту функцию, обратный вызов не выполняется и никаких изменений не применяются к базе данных. Эффективно обновление не происходит.
Когда я вызываю функцию во второй раз, обратный вызов от первого вызова возвращается, а изменения от последнего обновления применяются к БД. Обратный вызов для второго вызова не возвращается, хотя и никаких изменений для второго вызова не выполняются.
Когда я называю это в третий раз, обратный вызов 2 возвращается и изменяет 2 применяются, но не обратный вызов и изменяет 3. И так далее ...
Я предположил, что это что-то делать с функцией мангустов непосредственно не выполняет, если не указано обратного вызова, поэтому я попытался добавить пустое «варианты» массив:
Message.update(searchQuery, updateQuery, **{}**, function(err, response){...});
или выполнения обновления в явном виде:
Message.update(searchQuery, updateQuery).exec(function(err, response){...});
Результаты не изменились.
Отсутствие обратных вызовов обычно вызвано обновлением, ожидающим открытия соединения. Был ли ваш вызов 'mongoose.connect' сделан до первого вызова' update'? – JohnnyHK
Вот и все! Я об этом не думал, потому что в итоге он был обновлен. Можете ли вы опубликовать свой комментарий в качестве ответа и потенциально объяснить, почему он вообще работает? – Worp