.then操作成功时执行catch
Catch is executed when .then operation is successful
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 块。
这是在 Node Express 服务器中用 knex.js 编写的,为了以防万一,查询语句正在查询水果 table,其中 fruit_name 列的项目等于苹果,如果苹果不存在,则插入新的数量行,否则,如果存在,则更新数量行。
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 => {
return res.sendStatus(500)
})
嗨,卡尔弗特。您需要 return 您的 responses.This 现在应该可以正常工作了。
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 块。
这是在 Node Express 服务器中用 knex.js 编写的,为了以防万一,查询语句正在查询水果 table,其中 fruit_name 列的项目等于苹果,如果苹果不存在,则插入新的数量行,否则,如果存在,则更新数量行。
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 => {
return res.sendStatus(500)
})
嗨,卡尔弗特。您需要 return 您的 responses.This 现在应该可以正常工作了。