簡體   English   中英

Nodejs mssql 全局連接

[英]Nodejs mssql global connection

我使用 nodejs 連接到 SQL Server。 但是我未能創建在所有查詢之間共享的全局連接。 在文檔中,查詢都包裹在連接回調函數中,這意味着我每次進行查詢時都必須建立連接。

有沒有辦法讓單個連接保持活動狀態,以便我可以與所有控制器共享它? 我已經用 mongodb 完成了,不確定 SQL Server 是如何做到的。

我做了這樣的事情

連接.js

const config = require('./config')
const sql = require('mssql')
const pool = sql.ConnectionPool(config).connect(function(err){
    if(err) throw err;
    console.log("connected");
});
module.exports = {
    sql, pool
}

服務器.js

const conn = require('./connection.js')
const requst = new conn.sql.Request(conn.pool)
request.query('select * from table', function (err, recordset){
    if(err) console.log(err);
    console.log(recordset);
});

它失敗了,因為連接已關閉。

請分享您的一些見解,謝謝

我將 MSSQL 用於我的一個項目,以在全球范圍內運行它,這就是我所做的。

服務器.js

const sql = require('mssql');
const config = require('./config');
sql.connect(config, (err) => {
if (err) return console.error(err);
  console.log("SQL DATABASE CONNECTED");
});

一些控制器文件

const sql = require('mssql');
const request = new sql.Request();
request.multiple = true;

request.query('select * from table') => {
  if(err){
    return console.error(err);
  }
  return res.send(recordset)
});

希望這可以幫助。

您的第一種方法可以正常工作,但您必須考慮 connect() 的異步性質。 發生的事情是調用了 connect,導出了變量,然后你去使用它——但它並沒有完成連接。 我會推薦這樣的修復:

const conn = require('./connection.js'); 
queryDatabase(conn.pool); 

async function queryDatabase(pool_connection){
    let pool = await pool_connection; 
    let request = new conn.sql.Request(pool); 
    request.query('select * from table', function (err, recordset){
         if(err) console.log(err);
         console.log(recordset);
    });
} 

在你的服務器js中。 您可以在連接器文件中等待連接,但這首先違背了具有非阻塞異步功能的目的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM