node.js - SQL - 捕获 Sails.js 中 Transaction() 函数中的错误

标签 node.js sails.js

我有以下代码:

await sails.getDatastore().transaction(async function(db, proceed) {
  for(var ctr1 = 0; ctr1 < tables.length; ctr1++) {
    for(var ctr2 = 0; ctr2 < tblData[0].length; ctr2++) {
      var colData = tblData[0][ctr2];

      if(tables[ctr1] == 'AD5300') await Items.create(colData).usingConnection(db);
      if(ctr1 == tables.length - 1 && ctr2 == tblData[0].length - 1) return proceed();
    }
  }
});
return exits.success({ "STATUS" : "1" });

它有效,而且没有什么可担心的(至少现在是这样)。 我在这里遇到的唯一问题是,如果线路发生错误

if(tables[ctr1] == 'AD5300') await Items.create(colData).usingConnection(db);

它结束该过程。我想要的是获取错误消息,以便我可以使用自己修改的响应来解析详细信息。有办法做到这一点吗?

如果我没记错的话,这是 Sails 的最新版本。我相信 Sails 1.0,但我可能是错的。

我使用此链接作为引用: https://sailsjs.com/documentation/reference/waterline-orm/datastores/transaction

最佳答案

您可以在查询末尾添加 .intercept() 方法。作为参数,您传入要捕获的错误类型,然后传入一个用于说明如何处理它们的函数。 https://sailsjs.com/documentation/reference/waterline-orm/queries/intercept

编辑: 再次查看后,我上面的答案并不能解决您的问题,但我想保留它,因为使用拦截仍然对某些人有帮助。

您现在可以从交易中删除继续并在下面添加一个捕获。这将使您能够在不停止进程的情况下捕获错误。

关于node.js - SQL - 捕获 Sails.js 中 Transaction() 函数中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52552650/

相关文章:

node.js - 为什么我收到错误 "Identifier ... has already been declared"?

javascript - 如何在 Node.js 中定义分水岭?

javascript - 无法从其他文件加载 html

javascript - 如何使 Winston 在 Sails.js 应用程序中全局可用?

file - Docker:容器内npm创建的文件的权限

node.js - 在 Node http-proxy 后面 sails

node.js - 我如何在 wamp 中运行 Angular 6 应用程序?

node.js - 缩进无效。 Jade 模板

javascript - Node 只向客户端发送 html 内容,而不是发送整个 Vue 应用程序

json - Sails Js-Waterline : Serialize, 解析并初始化模型