2017-07-05 24 views
1

SQLストアドプロシージャをSQL Serverから呼び出そうとしています。私はmssqlパッケージでNodeJSを使用しています。私はmssql Npmのドキュメントからほとんどのコードを入手しました。しかし、それはまだ動作しません。NodeJS - SQL Server接続が閉じられました

コードは基本的にConnectionPoolの読み取りを最後に更新し、ConnectionPoolへの接続を変更し、新しい要求を作成し、パラメータを導入してストアドプロシージャを実行しようとします。私は接続変数を毎回別のデータベースに変更する必要があるため、この方法があります。

私が手にエラーがある:

ConnectionError: Connection is closed.

マイコード:

const sql = require('mssql'); 

const config = require('../config/dbPoly'); 

module.exports.registerUser = function(pUserName, pPassword, pNombre, pApellidos, pFK_TipoUsuario, callback) { 

    var connection = new sql.ConnectionPool(config); 
    var request = new sql.Request(connection); 
    request.input('input_parameter', sql.VARCHAR(25), pUserName); 
    request.input('input_parameter', sql.VARCHAR(16), pPassword); 
    request.input('input_parameter', sql.VARCHAR(25), pNombre); 
    request.input('input_parameter', sql.VARCHAR(50), pApellidos); 
    request.input('input_parameter', sql.Int, pFK_TipoUsuario); 

    request.execute('RegistrarUsuario', (err, result)=>{ 
    if(err){ 
     console.log(err); 
    } 
    else{ 
     console.log(result); 
    } 
    }); 
}; 

答えて

2

実装のこの非同期バージョンがあります。これはあなたの目的

const sql = require('mssql'); 

const config = require('../config/dbPoly'); 

module.exports.registerUser = async function(pUserName, pPassword, pNombre, pApellidos, pFK_TipoUsuario) { 

    try { 

     let connection = await sql.connect(config) 

     let result = await connection.request() 
      .input('input_parameter', sql.VARCHAR(25), pUserName); 
      .input('input_parameter', sql.VARCHAR(16), pPassword); 
      .input('input_parameter', sql.VARCHAR(25), pNombre); 
      .input('input_parameter', sql.VARCHAR(50), pApellidos); 
      .input('input_parameter', sql.Int, pFK_TipoUsuario); 
      .execute('RegistrarUsuario'); 

     return result; 
    } catch (err) { 
     console.log(err); // ... error checks 
    } 

}; 

sql.on('error', err => { 
    // ... error handler 
}) 
+0

ありがとう、これは私のために完全に働いた。 – Luis

+0

ポート設定を削除します。デフォルトは '1443'です。名前付きインスタンスを使用する場合は使用しないでください –

+0

問題は解決しましたか? Upvoteあなたが助けになるなら、あなたは大歓迎です! –

0

を提供する場合、他の誰かがこの問題に直面している場合は、Prabodhの答えは完璧に動作確認してください。

私は別の問題に直面しました。ローカルホストは1500msで定義されていませんでした。なぜなら、json設定ファイルの私のサーバフィールドは、 'localhost \ Server-Name'という形式だったからです。私はそれをただ「localhost」に変更し、問題を修正しました。

また、サーバーにWindows認証だけでなく、SQL認証が有効になっていることを確認してください。

+0

また、名前付きインスタンスを使用している場合は、モジュールのドキュメントに従ってconfigに 'port'を追加しないでください。 https://www.npmjs.com/package/mssql#general-same-for-all-drivers –

関連する問題