我有以下代码:
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/