You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

express-cassandra中saveAsync仅执行两次才生效,如何解决?

问题分析与解决方案

你的代码核心问题是混用了await和回调函数两种异步处理方式,导致saveAsync的执行逻辑异常。

错误原因

express-cassandra的saveAsync方法有两种使用模式:

  • 当传入回调函数时,它采用传统回调式异步流程,不会返回Promise,此时await完全不起作用——代码会直接跳过等待,继续执行后续逻辑,而保存操作可能还在后台未完成,所以看起来第一次调用没生效。
  • 第二次调用时,可能第一次的异步操作刚好延迟完成,或是第二次调用触发了正确的保存流程,才让数据成功写入。

正确写法二选一

写法1:使用await + try/catch(推荐,符合现代异步编程风格)

去掉回调函数,直接用await等待Promise完成,通过try/catch捕获错误:

try {
  await user.saveAsync();
} catch (err) {
  console.error("Error saving newRecord:", err.message);
  reject(err); // 若在Promise内部,直接抛出或reject即可
}

写法2:仅使用回调函数

如果坚持用回调,就不要加await,确保异步逻辑在回调内处理:

user.saveAsync((err) => {
  if (err) {
    console.error("Error saving newRecord:", err.message);
    reject(err);
    return;
  }
  // 保存成功后的后续逻辑写在这里
});

内容的提问来源于stack exchange,提问作者Diganta Kr Banik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 23:52:09