Sequelize连接和日志记录问题

时间:2016-12-21 17:34:06

标签: node.js typescript sequelize.js tedious

我正在尝试使用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 Server内容的设置。

无论如何,我当前的连接字符串不会出错。但是,并不是说连接已经建立。

我尝试将我的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;
}

我不相信这是使用续集的正确方法,我仍然在建立我的项目结构,但是现在我希望看到"得到一个结果&#34 ;或者是错误,但是then()catch()都没有记录任何内容。前/后getter日志记录正常。

我认为连接需要很长时间,但是我的IT人员说他在我们的SQL日志中看到了我的成功连接,而且我认为以前我在大约15,000毫秒内获得了超时。

1 个答案:

答案 0 :(得分:1)

通过包含另一个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);
});