我应该在 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/catchawait,这样您就可以区分成功与 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);
 }