Sequelize 连接和日志记录问题
Sequelize connection and logging issues
我正在尝试使用 Sequelize 连接 SQL Server 2012 数据库。当我的连接字符串明显错误时,我看到 ECONN REFUSED 消息和超时。现在,尽管根据以下代码登录成功和失败,但我没有收到任何响应:
import * as Sequelize from 'sequelize';
-- connection string redacted
let seqConn = new Sequelize("mssql://**;Initial Catalog=**;Persist Security Info=True;Integrated Security=SSPI; User ID=**; Password=**")
seqConn
.authenticate()
.then(function(err) {
console.log('Connection has been established successfully.');
})
.catch(function (err) {
console.log('Unable to connect to the database:', err);
});
我之前使用的语法是:
let seqConn = new Sequelize("DB", "Username", "Password",
{
dialect: 'mssql',
dialectOptions: {
instanceName: 'dev'
},
host: '**'
};
但我找不到用于集成安全性或其他花哨 SQL 服务器设置的设置。
无论如何,我当前的连接字符串没有错误。而且,也不是说连接已经建立了。
我尝试将我的 seqConn 传递给模型以使用它来检索模型:
getModel(seqConn): void {
console.log("Getting");
var model = seqConn.define("dbo.Model", {
modelID: Sequelize.INTEGER,
modelNo: Sequelize.INTEGER,
modelName: Sequelize.STRING(50),
modelAge: Sequelize.DATE
});
seqConn.sync().then(function() {
model.findOne()
.then( function (modelRes){
console.log("got a result!?");
console.log(modelRes.get("modelName"));
})
.catch( function (error){
console.log("it didn't work :( ");
});
});
console.log('after getter');
return;
}
我不确定这是使用 sequelize 的正确方法,我仍在建立我的项目结构,但现在我希望看到 "got a result" 或错误,但没有正在从 then()
或 catch()
记录到这里。 before/after getter 日志记录正常。
我认为连接需要很长时间,但我的 IT 人员说他在我们的 SQL 日志中看到了我的成功连接,我认为之前我在大约 15,000 毫秒内超时。
问题已通过包含另一个 NPM 模块解决:`sequelize-msnodesqlv8'
然后连接到 Sequelize 的代码如下所示:
var Sequelize = require('sequelize');
var seqConn = new Sequelize({
dialect: 'mssql',
dialectModulePath: 'sequelize-msnodesqlv8',
dialectOptions: {
connectionString: 'Driver={SQL Server Native Client 11.0};[REDACTED]'
}
});
seqConn
.authenticate()
.then(function(err) {
console.log('Connection has been established successfully.');
})
.catch(function (err) {
console.log('Unable to connect to the database:', err);
});
我正在尝试使用 Sequelize 连接 SQL Server 2012 数据库。当我的连接字符串明显错误时,我看到 ECONN REFUSED 消息和超时。现在,尽管根据以下代码登录成功和失败,但我没有收到任何响应:
import * as Sequelize from 'sequelize';
-- connection string redacted
let seqConn = new Sequelize("mssql://**;Initial Catalog=**;Persist Security Info=True;Integrated Security=SSPI; User ID=**; Password=**")
seqConn
.authenticate()
.then(function(err) {
console.log('Connection has been established successfully.');
})
.catch(function (err) {
console.log('Unable to connect to the database:', err);
});
我之前使用的语法是:
let seqConn = new Sequelize("DB", "Username", "Password",
{
dialect: 'mssql',
dialectOptions: {
instanceName: 'dev'
},
host: '**'
};
但我找不到用于集成安全性或其他花哨 SQL 服务器设置的设置。
无论如何,我当前的连接字符串没有错误。而且,也不是说连接已经建立了。
我尝试将我的 seqConn 传递给模型以使用它来检索模型:
getModel(seqConn): void {
console.log("Getting");
var model = seqConn.define("dbo.Model", {
modelID: Sequelize.INTEGER,
modelNo: Sequelize.INTEGER,
modelName: Sequelize.STRING(50),
modelAge: Sequelize.DATE
});
seqConn.sync().then(function() {
model.findOne()
.then( function (modelRes){
console.log("got a result!?");
console.log(modelRes.get("modelName"));
})
.catch( function (error){
console.log("it didn't work :( ");
});
});
console.log('after getter');
return;
}
我不确定这是使用 sequelize 的正确方法,我仍在建立我的项目结构,但现在我希望看到 "got a result" 或错误,但没有正在从 then()
或 catch()
记录到这里。 before/after getter 日志记录正常。
我认为连接需要很长时间,但我的 IT 人员说他在我们的 SQL 日志中看到了我的成功连接,我认为之前我在大约 15,000 毫秒内超时。
问题已通过包含另一个 NPM 模块解决:`sequelize-msnodesqlv8'
然后连接到 Sequelize 的代码如下所示:
var Sequelize = require('sequelize');
var seqConn = new Sequelize({
dialect: 'mssql',
dialectModulePath: 'sequelize-msnodesqlv8',
dialectOptions: {
connectionString: 'Driver={SQL Server Native Client 11.0};[REDACTED]'
}
});
seqConn
.authenticate()
.then(function(err) {
console.log('Connection has been established successfully.');
})
.catch(function (err) {
console.log('Unable to connect to the database:', err);
});