我应该在nodejs mysql中使用await关键字删除,更新和创建操作吗?池的查询呢?



我对async await比较陌生,我想知道我是否应该在不返回任何值的操作上使用await。例如……

我应该

const deleting_info = await pool.query('DELETE where...');

还是

pool.query('DELETE WHERE...')

我觉得我应该用第二个,但我不确定,还没能找到答案。我的理解是,我可以在不使用await关键字的情况下更快地继续。请帮助。谢谢你。

您似乎忘记了错误记录和错误处理,并根据操作是否成功或失败向http请求发送不同的响应。

至少,你必须监听数据库调用中的错误,这样你就不会有未处理的拒绝,这样你就可以记录任何错误,并可能影响从传入的http请求返回的状态。

您可以使用awaittry/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(),或者await周围有try/catch,这样您就可以区分成功与不成功。

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);
}

相关内容

最新更新