Глобальная переменная не определена в async.atuo в nodejs - PullRequest
0 голосов
/ 08 октября 2019

У меня есть этот код:

var file_id = [];

async.auto({
    encrypt_pass: function(callback, pass) {
         pool.query('SELECT blabla FROM hmm WHERE id=?',[1], function (err, rows, fields) {
              if (!rows.length) return callback('password retrieve failed');
              callback(null, rows[0].blabla));
          })
    },
    file_user: ['encrypt_pass', function(results, callback) {
         console.log('file_id[id] ... ' + file_id[id]);
         if (!file_id[id]) {
            start_file_read(id);
            console.log('reading file ...' + id);
         }
    }]
}, function(err, results) {
    if (err) res.end(); return console.log(err)
    console.log('all OK without errors...')
})


function start_file_read(id) {
   file_id[id] = 'code that reads my file';
}

Что я получаю из console.log undefined, поэтому я не могу использовать массив глобальных переменных, который заполнен функцией start_file_read(id) массив заполненкод, который читает файл так, что file_id[id] определен в этой функции, но приведенный выше код получается каждый раз, когда я запускаю async.auto функцию undefined ... как это исправить, чтобы глобальные переменные определялись в async.auto?

У меня есть эта проблема, потому что, если я вызываю несколько раз async.auto, он получает каждый раз, когда файл читается, так что я имею, тогда, если я вызываю, например, функцию 10times async.auto, она читает файл 10 раз, потому что глобальная переменная file_id не определена .. Любая помощь приветствуется, потому что я пытаюсь через 3 дня безуспешно.

Спасибо

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