Я запускаю асинхронную проблему при настройке службы angular базы данных с помощью узла mssql.
По сути, я хочу, чтобы эта служба была центральным местом для запроса из базы данных.
Проблема, с которой я сталкиваюсь, заключается в том, что когда приложение загружается, мне нужно, чтобы он выполнял первоначальный запрос, и когда это происходит, метод подключения еще не завершен.
Как я могу выполнить функцию запроса дождаться пула, чтобы разрешить значение до выполнения?
const sql = require('mssql');userManagerApp.service('SqlService', function() {
var pool; var connect = async function() {
pool = await sql.connect('mssql://user:pass@host/database')
}
connect(); var query = async function (query) {
try {
var results = await pool.request().query(query).recordset;
return results;
} catch (e) {
console.log(e);
}
} var theService = {
query : query
};
return theService;
});
Взгляните на пример NPM MSSQLTry:
service
используется неправильно, потому что уже есть экземпляр службыthis
, нет необходимости возвращать новый.Обещание соединения должно быть сохранено и прикованный во всех методах, которые зависят от него, это общий рецепт (используемый в Mongoose, например):