我正在解决一个简单的逻辑问题,但我似乎无法让事情顺利进行。让我分享一下我最有说服力的代码实验,然后我会分享一些想法。
useEffect(() => {
firebase
.firestore()
.collection("someCollection")
.orderBy("date", "desc")
.onSnapshot(docs => {
let documents = []
if (canGetUpdatesFromFirestore.current) {
docs.forEach((doc) => {
documents.push(doc.data())
})
if(documents.length > 3) {
documents.splice(4, 0, {questionPostId: 0})
documents.splice(5, 0, {questionPostId: 1})
}
setAllQuestions(documents)
setUsers(documents)
}
})
if (searchValue.length > 2) {
canGetUpdatesFromFirestore.current = false;
functions.searchForSearchVal(searchValue, "Sexuality")
.then((result) => {
setAllQuestions(result);
})
} else {
canGetUpdatesFromFirestore.current = true
}
}, [searchValue])
function setUsers(docs){
let arrFinal = []
let copyOfAllQuestions = ""
for(let i = 0; i< docs.length; i++) {
console.log("HERE")
if (docs[i].postedBy) {
docs[i].ref.get().then(userFire => {
copyOfAllQuestions = {
...allQuestions,
...{hasPremium: userFire.data().hasPremium}
}
})
arrFinal.push(copyOfAllQuestions)
}
}
setAllQuestions(arrFinal)
}
让我分享一下我目前的状态以及我正在努力完成的工作。我有一个显示allQuestions。每个问题数据都有一个指向其在 firestore 中的用户文档的引用。对于每个问题,我都需要检查该用户是否 hasPremium。我应该如何以正确的方式做到这一点?目前的问题是我可以通过ref从我的Users集合中获取数据,但我必须刷新我的状态才能显示所有数据。有人可以帮我走上正确的道路/请正确思考这个问题吗?