2017-07-11 3 views
-3

私はnewUsersがmongoose呼び出しの外で知られていない以下のコードを持っています。 私はnewUsersリストを返す必要があります。Array.push()が機能していませんか?

長い間苦労しています。しかし、何か改善されていない。私はあなたがより良い結果のためにforEach()外に返すべきだと考えたよう

exports.list = function(req, res) { 

     User.find({ 'roles': 'user' }, '-salt -password -providerData').sort('-created').populate('user', 'displayName').lean().exec(function(err, users) { 
     if (err) { 
      return res.status(422).send({ 
      message: errorHandler.getErrorMessage(err) 
      }); 
     } 
     var i; 
     var newUsers = []; 
     users.forEach(function(user) { 
      Customer.find({ user: user._id }).exec(function(err, customers) { 
      if (err) { 
       return res.status(400).send({ 
       message: errorHandler.getErrorMessage(err) 
       }); 
      } 
      user.customers = customers.length; 
      newUsers.push(user); 
      console.log(newUsers.length); // newUsers are known here 
      return newUsers; **// does not workout** 
      }); 
      console.log(newUsers.length); //newUsers are not known here 
     }); 
     }); 
    }; 
+0

について読む必要がある - 私はノードと角度に新しいです。私は理解しようとします – Sam

+0

オザーを助けようとするまで、否定投票をすることは役に立たないです – Sam

+0

私はあなたの質問をd​​ownvotingしていない、ただ重複としてflaged –

答えて

0

あなたは、forEach()の内側に戻ってきています。

コードの下に試してみてください、それはあなたのために働くことを願っています:

exports.list = function (req, res) { 
    User.find({ 'roles': 'user' }, '-salt -password -providerData').sort('-created').populate('user', 'displayName').lean().exec(function (err, users) { 
     if (err) { 
      return res.status(422).send({ 
       message: errorHandler.getErrorMessage(err) 
      }); 
     } 
     var i; 
     var newUsers = []; 
     users.forEach(function (user) { 
      Customer.find({ user: user._id }).exec(function (err, customers) { 
       if (err) { 
        return res.status(400).send({ 
         message: errorHandler.getErrorMessage(err) 
        }); 
       } 
       user.customers = customers.length; 
       newUsers.push(user); 
      }); 
     }); 
     console.log(newUsers.length); 
     return newUsers; 
    }); 
}; 
+0

まだ動作しません。これはすでに試しました – Sam

+0

newUsers.push(user)またはnewUsers.push(customers)をプッシュしますか?私はnewUsers.push(顧客)をしたいと思う。 –

+0

いいえいいえ、自分自身で顧客を摘発したい – Sam

1
exports.list = function (req, res) { 
    User.find({ 'roles': 'user' }, '-salt -password -providerData').sort('-created').populate('user', 'displayName').lean().exec(function (err, users) { 
     if (err) { 
      return res.status(422).send({ 
       message: errorHandler.getErrorMessage(err) 
      }); 
     } 
     var i; 
     var newUsers = []; 
     users.forEach(function (user) { 
      Customer.find({ user: user._id }).exec(function (err, customers) { 
       if (err) { 
        return res.status(400).send({ 
         message: errorHandler.getErrorMessage(err) 
        }); 
       } 
       user.customers = customers.length; 
       newUsers.push(user); 
       console.log(newUsers.length, newUsers); 
      }); 
     }); 
    }); 
}; 

あなたはponury-kostek @ asynchroniousプログラミング

関連する問題