1

これは私が現在mssqlを使用している方法ですが、時々エラーが発生します:

JavaScript:

router.get('/academiejaren', (req, res) => {
    sql.connect(dbconfig, function (err) {
        var request = new sql.Request();
        if (err) {
            console.log(err);
            return;
        }
        request.query("SELECT * FROM [Alg].[DefAJ];", function (err, recordset) {
            if (err) {
                console.log(err);
                return;
            }
            else {
                res.end(JSON.stringify(recordset));
            }
        });
        request.query();
    });
});

エラー:

{ ConnectionError: Connection is closed.
    at C:\Users\Milan\Documents\Octopus\Octopus 2.0\node_modules\mssql\lib\main.js:1569:17
    at _combinedTickCallback (internal/process/next_tick.js:73:7)
    at process._tickCallback (internal/process/next_tick.js:104:9)
  name: 'ConnectionError',
  message: 'Connection is closed.',
  code: 'ECONNCLOSED' }
(node:556) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): ConnectionError: Connection is closed.
(node:556) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

最新バージョンの 4.0.2 を動作させることができないため、バージョン 3.2.0 を使用しています...ドキュメントを理解できないため、ヘルプまたはいくつかの良い例...

少し早いですがお礼を!

編集

小さなテスト プロジェクトを 4.0.2 に更新しました。そして私はそれを働かせました。API をこの更新プログラムに変更します。

router.get('/academiejaren', (req, res) => {
    (async function () {
        try {
            let pool = await sql.connect(config)
            let result1 = await pool.request()
                .query('SELECT * FROM [Alg].[DefAJ];')

            res.send(JSON.stringify(result1.recordset));


        } catch (err) {
            res.send("CAUGHT ERROR academiejaren");
        }
    })()

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

ちょっとした質問が残っていますが、catch と sql.on() をどうすればよいですか? エラーはどのように処理すればよいですか?

4

2 に答える 2

1

私は少し違うことをします:

router.get('/', function(req, res, next) {

    sql.connect(dbconfig).then(function() {
            // Query 
            new sql.Request().query("Your query")
              .then(function(recordset) {
                //console.dir(recordset);
                res.setHeader('Content-Type', 'application/json');
                res.send( recordset );
              }).catch(function(err) {
                // ... query error checks 
            });
       });
  });

dbconfig で次のようになっていることを確認してください: mssql://user:password@server/db

于 2017-04-25T11:57:01.640 に答える
1
router.get('/academiejaren', (req, res) => {
    sql.connect(dbconfig, function (err) {
        var request = new sql.Request();
        if (err) {
            console.log(err);
            return;
        }
        request.query("SELECT * FROM [Alg].[DefAJ];", function (err, recordset) {
            if (err) {
                console.log(err);
                return;
            }
            else {
                res.send(JSON.stringify(recordset));
            }
        });
        request.query();
    });
});

あなたは文字通りやりましたres.end、それをend終了します、あなたはしたいですres.send

于 2017-04-25T11:48:40.950 に答える