NodeJS 为什么这种连接和发送SQL请求的方法不起作用,而另一种方法却起作用?

tquggr8v  于 2023-06-22  发布在  Node.js
关注(0)|答案(1)|浏览(128)

令人惊讶的是,不工作的是来自mssql package page。为什么这个在我的机器上不起作用?我做错了什么?一个工作是一些例子,我发现其他地方在线和它的工作很好。
作为一个旁注-我需要异步地做这些请求吗?不工作的那个使用async,我应该什么时候使用这个?

var express = require('express');
var app = express();
const sql = require("mssql");

//Configuration for the database
const config = {
    user: 'sa',
    password: 'password',
    server: 'ipAddress', 
    database: 'DBName',
    trustServerCertificate: true, //Only setting this to true for testing on a local test server; Change to false when deploying to live
    encrypt: true,
};

app.get('/', function (req, res) {

    //THIS DOESNT WORK
     async () => {
         try {
          await sql.connect(config)
          var request = new sql.Request();
          const result = await request.query(`exec spTest null`)
          console.dir(result)
          res.send(result.recordset)
         } catch (err) {
          // ... error checks
          console.dir(err)
         }
     }

    //THIS ONE WORKS!
    // sql.connect(config, function (err) {
    
        // if (err) console.log(err);

        // // create Request object
        // var request = new sql.Request();
           
        // // query to the database and get the records
        // request.query('exec spTest null ', function (err, recordset) {
            
            // if (err) console.log(err)

            // // send records as a response
            // console.log(recordset)
            // res.send(recordset);
            
        // });
    // });
});

var server = app.listen(5000, function () {
    console.log('Server is running...');
});

不起作用的一个使localhost:5000不加载任何东西。但是,成功运行的服务器将返回SP的结果:

{"recordsets":[[{"SomeTimestamp":"2023-06-21T11:32:03.827Z","OtherField":""}]],"recordset":[{"SomeTimestamp":"2023-06-21T11:32:03.827Z","OtherField":""}],"output":{},"rowsAffected":[1,1]}
envsm3lx

envsm3lx1#

看起来“非工作”代码在请求处理函数中定义了async函数,并且在请求该路由时可能不会被“调用”。
试试改成这样

app.get('/', async (req, res) => {
     try {
      await sql.connect(config)
      var request = new sql.Request();
      const result = await request.query(`exec spTest null`)
      console.dir(result)
      res.send(result.recordset)
     } catch (err) {
      // ... error checks
      console.dir(err)
     }
 }

相关问题