【发布时间】:2022-11-11 02:04:11
【问题描述】:
我们正在使用 sequelize 包连接到 mssql 服务器。我们的后端代码是 javascript。
我们有一个如下的工作代码:
const sequelize = new Sequelize({
logging:log,
dialect:'mssql',
dialectModulePath: 'msnodesqlv8/lib/sequelize'
dialectOptions:{
connectionString: process.env.connectionString,
encrypt: false
},
operatorAliases: false
})
下面是我们在上面的 sn-p 中使用的 connectionString 的格式:
Driver={ODBC Driver 17 for SQL Server}; Server=<<Servername>>;Database=<<Database>>;Trusted_Connection=yes;
在 package.json 我可以看到以下 3 个包:
"msnodesqlv8":"^2.4.7",
"sequelize":"^4.41.2",
"sequelize-msnodesqlv8":"^0.2.6-beta.8"
在 sequelize 的官方文档中,我可以看到
const sequelize = new Sequelize('database', 'username', 'password', {
host: 'localhost',
dialect:'mssql',
operatorsAliases: false,
pool: {
max: 5,
min: 0,
acquire: 30000,
idle: 10000
},
// SQLite only
storage: 'path/to/database.sqlite'
});
没有提到msnodesqlv8。现在连接工作正常。但我只是想了解 sequelize 是否在幕后使用繁琐,以便拥有适当的驱动程序,以便可以建立与 DB 的连接。那么msnodesqlv8有什么用呢?
在msnodesqlv8 官方文档中,我可以看到它具有一些增强的安全功能。
我想通过理解这一点来实现什么?
我想从msnodesqlv8 中删除我的代码的依赖关系,并且sequelize for mssql 的官方文档中提供的sn-p 对我不起作用。
删除msnodesqlv8 的依赖的原因是什么?
我们正在将代码迁移到 linux,msnodesqlv8 与 linux 兼容,后者依赖于需要单独安装的 msodbcsql17 驱动程序。
【问题讨论】:
-
好的。所以在浏览了很多文章之后,我的理解是,纯javascript的繁琐不具备集成安全性。因此这里出现了像
msnodesqlv8这样的包,它提供了驱动程序以确保sequelize的正常工作。但似乎 msnodesqlv8 依赖于需要单独安装的msodbcsql17。如果我在某个地方错了,任何对此有一些想法的人都想纠正我?
标签: javascript node.js sql-server sequelize.js odbc