26

質問はいくつかの古い質問と重複していますが、それ以降は変更されている可能性があります。

Node.js (MS の公式ライブラリなど) から SQL Server に接続するための公式サポートはありますか? または、少なくとも、運用グレードのアプリケーションに適した、適切に管理されたサードパーティのライブラリですか?

私たちは通常、ASP.NET MVC/SQL Server の組み合わせを使用しますが、現在、express/Node.js がより適切であると思われるタスクがある (そして、何か新しいものを試してみたい) ため、問題はできるかどうかです。 Node.js と SQL Server の相互作用に依存します。

UPD: Microsoft がついに公式ドライバーをリリースしたようです: https://github.com/WindowsAzure/node-sqlserver

4

6 に答える 6

14

ノードJS用のMSSQLモジュールのこのリストを見たかどうかはわかりません

可能であれば、使用した後の経験を共有してください。

幸運を

于 2012-04-25T10:07:36.680 に答える
7

SQL Server 接続用の Node.JS のプレビュー ドライバーをリリースしました。ここで見つけることができます: SQL Server 用 Node.JS 用 Microsoft ドライバーの紹介

ドライバーはコールバックをサポートしています (ここでは、ローカルの SQL Server インスタンスに接続しています)。

// Query with explicit connection
var sql = require('node-sqlserver');
var conn_str = "Driver={SQL Server Native Client 11.0};Server=(local);Database=AdventureWorks2012;Trusted_Connection={Yes}";

sql.open(conn_str, function (err, conn) {
    if (err) {
        console.log("Error opening the connection!");
        return;
    }
    conn.queryRaw("SELECT TOP 10 FirstName, LastName FROM Person.Person", function (err, results) {
        if (err) {
            console.log("Error running query!");
            return;
        }
        for (var i = 0; i < results.rows.length; i++) {
            console.log("FirstName: " + results.rows[i][0] + " LastName: " + results.rows[i][1]);
        }
    });
});

または、イベントを使用することもできます (ここでは、SQL Azure 別名 Windows Azure SQL データベースに接続しています)。

// Query with streaming
var sql = require('node-sqlserver');
var conn_str = "Driver={SQL Server Native Client 11.0};Server={tcp:servername.database.windows.net,1433};UID={username};PWD={Password1};Encrypt={Yes};Database={databasename}";

var stmt = sql.query(conn_str, "SELECT FirstName, LastName FROM Person.Person ORDER BY LastName OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY");
stmt.on('meta', function (meta) { console.log("We've received the metadata"); });
stmt.on('row', function (idx) { console.log("We've started receiving a row"); });
stmt.on('column', function (idx, data, more) { console.log(idx + ":" + data);});
stmt.on('done', function () { console.log("All done!"); });
stmt.on('error', function (err) { console.log("We had an error :-( " + err); });

問題が発生した場合は、Github で問題を報告してください: https://github.com/windowsazure/node-sqlserver/issues

于 2012-06-08T00:16:21.393 に答える
2

npm には、というモジュールがあります。mssqlhelper

次の方法でプロジェクトにインストールできますnpm i mssqlhelper

接続してクエリを実行する例:

var db = require('./index');

db.config({
    host: '192.168.1.100'
    ,port: 1433
    ,userName: 'sa'
    ,password: '123'
    ,database:'testdb'
});

db.query(
    'select @Param1 Param1,@Param2 Param2'
    ,{
         Param1: { type : 'NVarChar', size: 7,value : 'myvalue' }
         ,Param2: { type : 'Int',value : 321 }
    }
    ,function(res){
        if(res.err)throw new Error('database error:'+res.err.msg);
        var rows = res.tables[0].rows;
        for (var i = 0; i < rows.length; i++) {
            console.log(rows[i].getValue(0),rows[i].getValue('Param2'));
        }
    }
);

詳細については、https ://github.com/play175/mssqlhelper をご覧ください。

:o)

于 2012-04-25T06:37:14.107 に答える
0

msnodesqlはうまく機能しています。以下にサンプルを示します。

var mssql = require('msnodesql'), 
    express = require('express'),
    app = express(),
    nconf = require('nconf')

nconf.env()
     .file({ file: 'config.json' });

var conn = nconf.get("SQL_CONN");   
var conn_str = "Driver={SQL Server Native Client 11.0};Server=server.name.here;Database=Product;Trusted_Connection={Yes}";

app.get('/api/brands', function(req, res){
    var data = [];
    var jsonObject = {};    

    mssql.open(conn_str, function (err, conn) {
        if (err) {
            console.log("Error opening the connection!");
            return;
        }
        conn.queryRaw("dbo.storedproc", function (err, results) {
        if(err) {
                   console.log(err);
                   res.send(500, "Cannot retrieve records.");
                }
       else {
             //res.json(results);

             for (var i = 0; i < results.rows.length; i++) {
                 var jsonObject = new Object()
                 for (var j = 0; j < results.meta.length; j++) { 

                    paramName = results.meta[j].name;
                    paramValue = results.rows[i][j]; 
                    jsonObject[paramName] = paramValue;

                    }
                    data.push(jsonObject);  //This is a js object we are jsonizing not real json until res.send             
            } 

                res.send(data);

            }       
        });
    });
});
于 2014-08-16T22:43:18.320 に答える