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

时间:2018-09-28 09:49:09

标签: 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

1 个答案:

答案 0 :(得分:0)

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

编辑: 再看一遍之后,上面的回答无法解决您的问题,但是我想离开它,因为使用intercept仍然会对某些人有所帮助。

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