在 node.js 中使用 mssql 关闭 MSSQL 连接

luk*_*awk 6 javascript sql-server node.js

我正在尝试在 node.js 中编写一个脚本来查询 MSSQL 数据库。我是 javascript 新手,node.js 新手,VSCode 新手,但我对 SQL 有一些了解。我有工作代码,但连接似乎从未关闭,我无法从函数中获取值。

所以,我有这块代码,我从npm的例子中得到:

const sql = require('mssql');
var dbConfig = {
    server:'theServer',
    database:'theDB',
    user:'un',
    password:'pw',
    port:1433
};

sql.connect(dbConfig).then(pool => {
    // Query     
    return pool.request()
    .query('select top 10 * from THE_TABLE')
}).then(result => {
    console.log(result);
}).catch(err => {
    // ... error checks
})
Run Code Online (Sandbox Code Playgroud)

这有效,我可以看到 10 个结果记录在控制台中。但是,代码永远不会停止运行。如何让连接关闭并停止?

我真的希望将结果保存到一个变量中,所以我将代码更改为:

const sql = require('mssql');
var dbConfig = {
    server:'theServer',
    database:'theDB',
    user:'un',
    password:'pw',
    port:1433
};

let theList;
sql.connect(dbConfig).then(pool => {
    // Query     
    return pool.request()
    .query('select top 10 * from THE_TABLE')
}).then(result => {
    theList= result;
}).catch(err => {
    // ... error checks
})

console.log(theList);
Run Code Online (Sandbox Code Playgroud)

这将 'undefined' 返回到 theList 的控制台,并且连接似乎永远不会停止,并且脚本永远不会关闭。

我如何只获取查询结果并继续前进?

Vik*_*tam 13

这对我有用。有一个.close()方法。

const DB = require("mssql")
const config = require("./config.json")
DB.connect(config)
   .then((conn) => 
      conn.query("SELECT * FROM table1")
         .then((v) => console.log(v))
         .then(() => conn.close())
   )
Run Code Online (Sandbox Code Playgroud)


mar*_*308 -4

你应该打电话

process.exit()
Run Code Online (Sandbox Code Playgroud)

到底。源节点文档

而且

sql.connect(dbConfig).then(pool => {
    // Query     
    return pool.request()
    .query('select top 10 * from THE_TABLE')
}).then(result => {
    theList= result;
}).catch(err => {
    // ... error checks
})
Run Code Online (Sandbox Code Playgroud)

是一个异步函数

console.log(theList);
Run Code Online (Sandbox Code Playgroud)

不会等待它更新值。

我想你想做

sql.connect(dbConfig).then(pool => {
    // Query     
    return pool.request()
    .query('select top 10 * from THE_TABLE')
}).then(result => {
    theList= result;
}).catch(err => {
    // ... error checks
}).then(function(){
  console.log(theList);
  process.exit(1);
})
Run Code Online (Sandbox Code Playgroud)