我有以下代码:
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
答案 0 :(得分:0)
您可以在查询末尾添加.intercept()方法。作为参数,您传递要捕获的错误类型,然后传递一个函数来处理它们。 https://sailsjs.com/documentation/reference/waterline-orm/queries/intercept
编辑: 再看一遍之后,上面的回答无法解决您的问题,但是我想离开它,因为使用intercept仍然会对某些人有所帮助。
您现在可以从交易中删除proceed
,并在下面添加一个捕获。这将使您能够在不停止过程的情况下捕获错误。