Nodejs - неправильное использование обещаний - PullRequest
0 голосов
/ 22 июня 2019

У меня есть следующий асинхронный метод:

alreadyLoaded: async function (id) {
        const pool = await poolPromise;
        return pool.request()
                        .input('idParameter', id)
                        .query('SELECT count(*) AS value FROM dbo.partidos WHERE id=@idParameter')
                        .then(result => {
                            console.log(result.recordset[0].value)
                            result.recordset[0].value > 0
                        }).catch(function(err) {
                            console.log(err.message);
                        }); 

Вызывается в другом:

processMatches: function(payload) {
    payload.matches.forEach(p => {

      if(partidosRepository.alreadyLoaded(p.id))
      {
        console.log("El partido ya fue cargado.");

        return;
      }

Метод alreadyLoaded проверяет, вставлена ​​ли какая-либо запись в базу данных, и вызывается ли она внутри другого метода для проверки. Проблема здесь в том, что метод processMatches продолжает обрабатывать записи до того, как alreadyLoaded завершит работу с текущей.

У меня неправильное управление обещаниями, может кто-нибудь помочь мне решить эту проблему?

Вот соединение с базой данных:

const poolPromise = new sql.ConnectionPool(config)
                .connect()
                .then(pool => {
                    console.log('Connected to localhost '+ config.database +' database');
                    return pool;
                })
                .catch(err => console.log('Database connection failed. Error: ', err));
module.exports = {
    sql, poolPromise
}

1 Ответ

0 голосов
/ 23 июня 2019

Почему бы вам не создать выражение if, подобное этому


if(await partidosRepository.alreadyLoaded(p.id))

, также помните, что вы не возвращаете логическое значение здесь


}).catch(function(err) {
   console.log(err.message);
}); 

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...