Не удалось сохранить данные из цикла в Javascript [duplicate]

Я хочу использовать forEach (JavaScript в узле js) для получения значений, а затем хранить их как массив. Но после окончания цикла мой массив пуст или он не сохраняется. Я не знаю причину проблемы, любая помощь, пожалуйста.

Form1.find({}, function(err, alluser) {
  if (err) {
    res.redirect("back");
  } else {
    var usernames = []; // I want to store the values here
    alluser.forEach(function(getuserid) {
      var userids = getuserid.userid;
      User.findById(userids, function(err, getnames) {
        if (err) {
          var nameitself = userids;
          usernames.push(nameitself);
        } else {
          var firstname = getnames.firstName;
          usernames.push(firstname);
          console.log(usernames); // this returns the stored values at each iterations 
        }
      });
    })
    console.log(usernames); // here I want the values but is empty [], I don't know the problem
    res.send(usernames) // this also sends empty array
  }
});

javascript,node.js,mongodb,javascript,

1

Ответов: 1


0

Проблема в том, что вы думаете об этом коде в терминах синхронной операции, то есть при выполнении строки за строкой.

Но в действительности следующая строка обращается к db, поэтому возвращается обратный вызов

User.findById (userids, function (err, getnames)

JavaScript, Node.js, MongoDB, JavaScript,
Похожие вопросы
Яндекс.Метрика