Я пытаюсь подключиться к функции сохранения в Mongoose, чтобы вернуть клиенту REST API ошибку, если в схеме не выполнено определенное условие. Я не могу использовать валидатор для этого, так как ограничение рассчитывается для нескольких полей схемы.
Я пытаюсь добавить хук в следующем стиле:
mySchema.pre('save', function (next) {
if(condition_is_not_met) {
const err = new Error('Condition was not met');
next(err);
}
next();
});
Это выбрасываетошибка, когда я пытаюсь позвонить конечной точке, пытаясь вставить объект, который нарушает условие, проверенное в ловушке:
Ошибка [ERR_HTTP_HEADERS_SENT]: невозможно установить заголовки после их отправки вclient
Я предполагаю, что это происходит, потому что продолжается выполнение маршрута написание заголовка для отправки его клиенту.
router.post('/mySchema', returnType, (req, res) => {
const s = new mySchema(req.body);
s.save((err) => {
if (err) {
const msg = { message: 'Could not add', error: err }; // This is returned to the caller
res.status(500);
res.send(msg);
}
res.status(200);
res.send(s);
});
});
Как я могу исправить эту проблему? Я искал довольно много, но темы, которые я нашел до сих пор, не помогают мне решить мою проблему. Они только помогли мне определить причину, не предложив работающего решения.