Вы дали нам слишком мало информации, чтобы помочь вам. Но у меня есть некоторые намеки на то, как узнать, что происходит не так: (я добавил пример кода в конце моего ответа.)
Используйте правильное форматирование своего кода. Ошибок легче найти.
Пожалуйста, избегайте res.send(err)
. Большинство экспресс-приложений предоставляют ошибку для перевода страницы HTML в конце маршрутного канала. Это работает, только если вы звоните res.next(err);
. Если ваше приложение не создает страницу с ошибкой в конце канала, вы можете использовать res.status(400).json({success: false, msg: err.message});
.
После использования res.send
или res.next
или res.json
вы должны завершить выполнение функции по return
перед одной из этих функций можно назвать второй раз. Это может быть очень сложно в случае вложенных или асинхронных вызовов метода. Но в вашем примере это довольно просто.
Используйте несколько выходных логов, чтобы узнать, какую часть кода вы доберете, а какие нет.
console.dir(<object>);
распечатывает структуру этого объекта.
Надеюсь, это немного поможет. ;-)
apiRoutes.put('/intake/:id', function(req, res)
{
var id = req.params.id;
Intake.findById(id, function(err, intake)
{
if (err)
{
res.next(err);
console.error(err);
return;
}
console.log("Modify check attribute");
intake.check = true;
console.dir(intake);
intake.save(function(err)
{
console.log("Intake save called!");
if (err)
{
console.error(err);
res.json({
success: false,
msg: 'Error'
});
return;
}
console.log("Success");
res.json({
success: true,
msg: 'Successful update check state.'
});
});
}})
});
Является ли 'check' действительным свойством в вашей схеме? Кроме того, вы хотите рассмотреть возможность использования ['findByIdAndUpdate'] (http://mongoosejs.com/docs/api.html#model_Model.findByIdAndUpdate), чтобы вы могли выполнить поиск и обновление с помощью одной команды. – robertklep
Я добавляю требуемое поле: true в схеме, но все еще не работает –
Можете ли вы добавить свою схему на свой вопрос? – robertklep