javascript - NodeJS/mssql 错误处理差异

标签 javascript sql-server node.js

我刚刚开始使用 mssql 包从 NodeJS 查询我的数据库。我的问题是关于错误处理...对于初学者,这是我的模块导入:

const sql = require('mssql');
const config = require('./pathToMyConfig.js');

我可以看到模块公开的大多数方法都可以作为 Promise 进行处理,并且 .catch() 可用于处理错误。

sql.connect(config).query("SELECT * FROM Customers").then().catch(err => {...});

但我还可以在文档中看到,有时他们会在导入的 mssql 模块上调用 .on('error')

sql.connect(config).query().then();
sql.on('error', err => {...});

这两个有什么区别?我想 .catch 只处理 Promise 主体上的错误,而 .on('error') 处理所有未捕获的内容?

是否还有其他差异,或者可能有相关约定?

最佳答案

如果初始化连接时发生错误,将调用

sql.on('error', err => {...}); 。这允许您在初始化期间处理任何异常。

.catch(err => {...}) 用于捕获查询执行期间发生的任何错误。

关于javascript - NodeJS/mssql 错误处理差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48113700/

相关文章:

javascript - js2-mode.el编译错误

javascript - 在 Nuxt Js 中集成 Stripe 元素

javascript - 尽管允许读+写,Firebase 上传到存储桶仍因权限错误而失败

node.js - 更新 Node.js 后更新 PM2 的正确方法

node.js - 使用 sequelize-typescript 未运行的 Sequelize beforeConnect Hook

javascript - 从 GitHub 贡献事件中排除 package-lock.json

javascript - 在 Node 中避免全局变量的最佳实践?

c# - 在 Linq/ODataController 中使用全文搜索

asp.net - 为什么 ASP.NET 忽略我的成员(member)连接字符串?

sql - 如何在左连接中选择单个记录