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

在Sails框架中创建新记录时如何正确使用await?

在Sails框架中使用await关键字的正确姿势

兄弟,你的代码报错主要有两个核心问题,我帮你捋捋:

首先,await只能在async函数里使用,你现在的create action是普通函数,没加async关键字,这是第一个坑。

其次,当你用await调用Waterline的模型方法时,不需要再传回调函数了——await本身就是用来替代回调的,直接接收返回结果,用try/catch来捕获错误就行。你原来的写法把回调和await混在一起,反而会出问题。

给你改好的代码:

create: async function (req, res, next) { 
  try {
    // 用await直接获取创建后的记录,不需要回调
    var new_place = await Place.create({...}).fetch(); 
    console.log(new_place); 
    return res.json({'status':true,'result':new_place});
  } catch (err) {
    // 捕获错误,处理无效属性的情况
    if (err.invalidAttributes) {
      return res.json({'status':false, 'errors':err.invalidAttributes}); 
    }
    // 其他未知错误可以统一处理
    return res.json({'status':false, 'errors':'未知错误'});
  }
}

最后补充几个注意点:

  • 必须给action函数加上async前缀,这是使用await的前提条件。
  • Waterline的fetch()方法不能省略,否则await拿到的是未执行的查询对象,不是实际创建的数据记录。
  • 用try/catch包裹await代码块,能覆盖所有可能的错误场景,包括字段验证失败、数据库连接异常等。

内容的提问来源于stack exchange,提问作者mas cm

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:53:36