db('fruit').where('fruit_name', 'apple')
.then(data => {
if (data.length === 0) {
db('fruit').insert({
amount: '2' //just for this post
})
.then(res.sendStatus(200))
.catch(res.sendStatus(500));
}
else {
db('fruit').where('fruit_name', 'apple').update({
amount: '5' //just for this post
})
.then(res.sendStatus(200))
.catch(res.sendStatus(500))
}
})
.catch(error => {
res.sendStatus(500)
})
Я не понимаю, почему выполняется блок catch, и сервер выдал мне ошибку Can't set header after sending them
. Эта ошибка возникает, потому что я отправляю два res.sendStatus. Блок .then работает нормально, и блок .catch не должен выполняться, если только данные не сохраняются в БД.
Это записано в knex.js на сервере Node Express, и на всякий случай оператор запроса запрашивает таблицу фруктов, где элемент столбца fruit_name равен apple, вставьте новую строку суммы, если apple не существует, если еще Существуют обновления строки суммы.