Чтобы все приложение Function совместно использовало один пул, нам нужно поместить часть инициализации в общий модуль.Christiaan Westerbeek опубликовал замечательное решение с использованием mssql , в этом отношении между приложением Function и веб-приложением не так много различий.
Я рекомендую использовать mssql
(используйте tedious
и generic-pool
для внутреннего использования) вместо tedious-connection-pool , который, кажется, не обновлялся в течение 2 лет.
Поместите код подключения в poolConfig.js
под SharedLib
папка.
const sql = require('mssql');
const config = {
pool:{
max:50 // default: 10
},
user: '',
password: '',
server: '',
database: '',
options: {
encrypt: true // For Azure Sql
}
};
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
}
и загрузить модуль для подключения к sql.Мы используем await, чтобы получить ConnectionPool, функция должна быть асинхронной (по умолчанию для функции v2 js).
const { poolPromise } = require('../SharedLib/poolConfig');
module.exports = async function (context, req) {
var pool = await poolPromise;
var result = await pool.request().query("");
...
}
Обратите внимание, что если приложение Function масштабируется с несколькими экземплярами, новый пул также будет создан для каждого экземпляра..