我应该在 nodejs mysql.pool 查询中对删除、更新和创建操作使用 await 关键字吗?
Should I use await keyword on delete, update and create operations in nodejs mysql.pool queries?
我对 async await 比较陌生,想知道是否应该在不返回任何值的操作上使用 await。例如..
我应该
const deleting_info = await pool.query('DELETE where...');
或者我应该
pool.query('DELETE WHERE...')
我觉得我应该使用第二个,但我不确定,也没有找到答案。我的理解是我可以在不使用 await 关键字的情况下更快地继续。请帮忙。谢谢。
您似乎忘记了错误记录和错误处理以及根据操作成功或失败向 http 请求发送不同的响应。
至少,您必须侦听数据库调用中的错误,这样您就不会遇到未处理的拒绝,这样您就可以记录任何错误并可能影响传入 http 请求的返回状态。
你可以用 await
包围 try/catch
来做到这一点,你会在 catch
块中得到错误,或者你可以只使用 .catch()
。如果您真的不在乎它何时完成并且不想等待完成再做其他事情,那么至少使用 .catch()
.
pool.query('DELETE WHERE...').catch(e => {
console.log(e);
// do something to handle the error (such as send an error status back from the request)
});
您不会显示请求处理程序的整个上下文,但通常,如果数据库操作正确完成,您将发送成功 2xx 状态,如果出现数据库错误,则发送错误状态(可能是 5xx)。因此,在这种情况下,您需要同时使用 .then()
和 .catch()
或周围带有 try/catch
的 await
,这样您就可以区分成功与 non-success。
try {
await pool.query('DELETE where...');
res.sendStatus(200);
} catch(e) {
// log the error and send error status in response
console.log(e);
res.sendStatus(500);
}
我对 async await 比较陌生,想知道是否应该在不返回任何值的操作上使用 await。例如..
我应该
const deleting_info = await pool.query('DELETE where...');
或者我应该
pool.query('DELETE WHERE...')
我觉得我应该使用第二个,但我不确定,也没有找到答案。我的理解是我可以在不使用 await 关键字的情况下更快地继续。请帮忙。谢谢。
您似乎忘记了错误记录和错误处理以及根据操作成功或失败向 http 请求发送不同的响应。
至少,您必须侦听数据库调用中的错误,这样您就不会遇到未处理的拒绝,这样您就可以记录任何错误并可能影响传入 http 请求的返回状态。
你可以用 await
包围 try/catch
来做到这一点,你会在 catch
块中得到错误,或者你可以只使用 .catch()
。如果您真的不在乎它何时完成并且不想等待完成再做其他事情,那么至少使用 .catch()
.
pool.query('DELETE WHERE...').catch(e => {
console.log(e);
// do something to handle the error (such as send an error status back from the request)
});
您不会显示请求处理程序的整个上下文,但通常,如果数据库操作正确完成,您将发送成功 2xx 状态,如果出现数据库错误,则发送错误状态(可能是 5xx)。因此,在这种情况下,您需要同时使用 .then()
和 .catch()
或周围带有 try/catch
的 await
,这样您就可以区分成功与 non-success。
try {
await pool.query('DELETE where...');
res.sendStatus(200);
} catch(e) {
// log the error and send error status in response
console.log(e);
res.sendStatus(500);
}