节点js - 处理大量数据时的承诺拒绝警告

时间:2017-02-10 08:48:58

标签: javascript sql-server node.js express promise

我正在创建一项功能,当您传递条形码时,条形码的产品会添加到表格中。

之后我们有一个按钮来保存表中的数据。对于每一行都需要生成一个戳记和插入名为bo,bo2和bo3的表格。

使用bo标记,我们将插入名为bi,bi2和sl。

的表中

所以,我创建了一个使用promises执行此操作的结构,但是我遇到了错误,但只有当我有20行时才会发生错误:

<node:6796> UnhandledPromiseRejectionWarning: Unhandled promise rejection <rejection id: 13>: RequestError: Transaction <Process ID 61> was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.

使用mssql库完成与数据库的连接。

就像我的功能更大,有必要向你展示所有代码,更好地理解我的功能下面的链接。 http://pastebin.com/MnM6AE6a

我已经改变了我的功能结构,但问题仍在继续。

1 个答案:

答案 0 :(得分:2)

您的代码示例是150行代码,因此我不会调试所有这些(您应该始终提供重现问题所需的最少代码示例,并在问题中包含您是否希望人们帮助您发现问题修复实际的错误)但UnhandledPromiseRejectionWarning意味着你没有包含一个承诺的捕获处理程序。

例如,如果您有任何地方:

promise.then(func);

而不是:

promise.then(func1, func2);

或:

promise.then(func1).catch(func2);

然后你的代码没有正确地减少承诺拒绝,因此被打破了。将来,这个程序甚至可能不会在下一版本的Node中启动 - 我在这个答案中更详细地解释了它:

此外,看了你的代码后我强烈建议阅读有关SQL注入攻击的内容。我是认真的。谷歌的主题和修复你的代码甚至在你解决未处理的承诺拒绝问题之前。认真。这些年来我不再提这个漫画了,但是每个开发者都应该知道并理解:

enter image description here

请阅读: