node.js - בעיות חיבור ורישום ב-Sequelize


אני מנסה להשתמש ב-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;
}

אני לא בטוח שזה הדרך הנכונה להשתמש ב-Sequelize, ואני עדיין מקים את מבנה הפרויקט שלי, אבל בינתיים אני מצפה לראות או 'קיבלתי תוצאה' או שגיאה, אבל כאן לא מתרחש שום רישום מאלו ששייכים ל-then() או ל-catch(). רישומי ה-before/after getter מתבצעים בסדר גמור.

שקולתי שזה לוקח הרבה זמן להתחבר, אבל ה-IT שלי אומר שהוא ראה את החיבור המוצלח שלי ביומני ה-SQL שלנו, ולפני כן קיבלתי זמני קצרים של כ-15,000 מילישניות, אני חושב.

תשובה #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);
});