2017-12-21 9 views
-1

私はnode.jsで何かを同期しようとしています。私はこれにいくつかの問題に直面しています。 どのようにして配列newArrを取得すると、各アイテムが返品オブジェクトthenから返されますか?.map synchronicで新しい配列を返す方法は?

Rating.find({userID: req.body.id}).then((ratings) => { 

    var newArr = ratings.map((rating) => { 

     User.find({_id: rating.reviewerID}).then((user) => {   
       return { 
       firstName: user[0].firstName, 
       text: rating.text, 
       rating: rating.rating 
       } 
     }) 
    }) 

    console.log(newArr); 

}); 
+0

正しくありませんあなたは物事 –

+0

の非同期性を変更カントので、私は(.MAP外User.findを配置する必要があります)へそれを動作させる? – zb22

+1

いいえ、User.findの前に 'return'を入れ、マップ呼び出しを' Promise.all'にラップすると、newArrは結果の配列に解決されるPromiseです。 –

答えて

0

あなたの方法は

Rating.aggregate([ 
{ 
    $lookup: { 
     localField: "reviewerID", 
     from: "user", 
     foreignField: "_id", 
     as: "some_data" 
    }, 
}, 

], function(err, data) { 
    if (err) throw err 
    if (!data)return res.send('data not '); 
    return res.status(200).json(data) 
    } 
}) 

You can also check this link

関連する問題