我讀了另一篇關於這個問題的帖子,但我無法弄清楚如何將其應用到我的情況(使用mongoose時node js Array.push()不起作用)
這是我的Mongoose非同步populate函數,我想要做的是將一個值推入一個包含每個評論的最終數組中,稍後我會對其進行某些操作。然而,.push()不起作用,我總是得到一個空數組;根據我所讀的內容,這與for循環是同步的,無法接受非同步值有關,但我不確定該如何修復它
//空数组将被填充所有分数 const allReviewsRating = [] this.populate("reviews").then(async function (allReviews) { for (const review of allReviews.reviews) { allReviewsRating.push(review.rating) } // async.map(review, allReviews.reviews) })
但即使我做類似這樣的事情
const allReviewsRating = [] this.populate("reviews").then(async function (allReviews) { allReviewsRating.push(`1`) for (const review of allReviews.reviews) { allReviewsRating.push(review.rating) } // async.map(review, allReviews.reviews) })
最終的陣列為空,這讓我更加困惑
我想知道我需要做什麼才能讓我的陣列不為空,並且實際上具有我想要的值
我認為你需要檢查一下,
this.populate()
函數沒有填充reviews
,如果它填充了,那麼問題可能出在allReviews.reviews
,即所有評論中沒有評論。其他所有功能都正常。我在我的系統上進行了測試。