【发布时间】:2020-07-14 16:39:38
【问题描述】:
希望大家都平安。
所以我试图获取当前用户的所有朋友的帖子但它不起作用,我总是收到一个空数组,就像函数在执行所有循环之前将数组发送到响应一样。
所以我正在做的是
获取当前用户的所有好友
映射他所有的朋友以获得每个朋友的所有帖子
然后我映射他的所有帖子并将每个帖子推送到一个数组中
最后,我希望函数在所有循环结束时发送包含每个帖子的数组,但它不起作用,我总是得到一个空数组。我是诺言和异步/等待世界的新手,但我不明白。
函数是这样的
exports.getFollowerPost = async (req, res) => {
const id_user = req.params.userUid;
let friendsReference = db.collection('Friends').doc(id_user);
let data = [];
await friendsReference.get().then((result) => {
if (!result.exists) {
console.log('No such document!');
res.send('no docs exist')
}
else {
let friends = result.data();
let friendsOfUser = friends.follow;
friendsOfUser.map((follow) => {
let postUser = db.collection('Post').doc(follow);
postUser.get().then(item => {
const eachPost = item.data().post;
eachPost.map(eachPostUser => {
data.push(eachPostUser);
console.log("add post")
})
}).catch(error => {
console.log(error)
})
})
}
})
.catch(error => {
res.status(400).send(error)
})
res.send(data) // always send a empty array ? why
}
【问题讨论】:
标签: node.js firebase express google-cloud-firestore async-await