使用Javascript使用Azure函数重用SQL server数据库连接
我无法从用Javascript编写的Azure函数中找到有关如何管理SQL server数据库连接的清晰信息 我正在使用连接池代码-使用Javascript使用Azure函数重用SQL server数据库连接,javascript,azure-functions,Javascript,Azure Functions,我无法从用Javascript编写的Azure函数中找到有关如何管理SQL server数据库连接的清晰信息 我正在使用连接池代码- const pool = new sql.ConnectionPool(config); const poolConnect = pool.connect(); pool.on('error', err => { // ... error handler }) 我正在使用执行查询的函数中的poolConnect对象 export const se
const pool = new sql.ConnectionPool(config);
const poolConnect = pool.connect();
pool.on('error', err => {
// ... error handler
})
我正在使用执行查询的函数中的poolConnect对象
export const selectQuery = function() {
const connectionPool = await mssqlDBPoolConnect;
const request = connectionPool.request();
await request.query('select query');
}
因此,如何在所有azure功能中使用相同的连接池。在根路径下创建两个名为config和toolkit的文件夹。将您的
db.js
放在config
文件夹中,并创建一个sql帮助器类,以便在toolkit文件夹中导出名为sqltools.js
的函数
因此,您可以通过在函数的代码中调用sqltools
来使用相同的连接池。此步骤有助于减少在每个函数中使用相同的代码
尝试使用下面的db.js
代码:
const sql = require('mssql')
const config = {
user: 'yourusername',
password: 'yourpassword',
server: 'yoursqlserver.database.windows.net', // You can use 'localhost\\instance' to connect to named instance. Do not use TCP.
database: 'yourdb',
"options": {
"encrypt": true,
"enableArithAbort": true
}
}
const poolPromise = new sql.ConnectionPool(config)
.connect()
.then(pool => {
console.log('Connected to MSSQL')
return pool
})
.catch(err => console.log('Database Connection Failed! Bad Config: ', err))
module.exports = {
sql, poolPromise
}
sqltools.js
类:
const { poolPromise } = require('../config/db')
module.exports.sqltools = {
ExecSqlQuery : async function(arg){
const pool = await poolPromise
//SELECT *FROM SYSOBJECTS WHERE xtype = \'U\'
var result=null;
try {
result = await pool.request()
.query(arg)
} catch (error) {
console.log(error.message);
}
return result;
},
ExecProce : function (arg2, arg3, arg4){
console.log(arg2,arg3,arg4);
}
}
这是我的HttpTrigger1index.js
code,调用ExecSqlQuery
执行sqlstrings
:
如果我的回复有帮助,请将其作为答案接受(单击回复旁边的标记选项,将其从灰色切换为填充),请参阅“谢谢”。它的工作,只是想澄清一件事,将所有我的azure功能将使用相同的连接每一次。我不想每次都为每个azure功能创建新连接我的答案只是一个示例代码,您需要自己改进db.js中的内容并导出一个sqlclient。连接到数据库时,请注意异常处理,并记住处置connect。请参阅:
const { sqltools } = require('../toolkit/sqltools');
module.exports = async function (context, req) {
context.log('JavaScript HTTP trigger function processed a request.');
var result=null;
try {
// call ExecSqlQuery func
result = await sqltools.ExecSqlQuery('SELECT *FROM SYSOBJECTS WHERE xtype = \'U\'');
} catch (error) {
console.log(error.message);
}
const responseMessage ="Func 1 Result : TableName= " + result.recordset[0].name;
context.res = {
// status: 200, /* Defaults to 200 */
body: responseMessage
};
}