reactjs - 如何使用 ReactJS 在 Firestore 的不同集合中查找用户?
问题描述
我有两个系列:users_unprocessed
和users_processed
. 当用户是新用户时,他将被添加到users_unprocessed
集合中。如果他被处理,他将被删除并添加到users_processed
.
我想创建一个包含所有用户的列表。因此我需要在users_processed
or中找到一个用户users_unprocessed
。该列表应该是响应式的并显示实时更新,因此我需要使用.onSnapshot()
.
database.collection("users_unprocessed").doc(id).onSnapshot((snapshot) => {
if (snapshot.numChildren > 0) {
setFetchedUser(snapshot.data());
} else {
database.collection('users_unprocessed').doc(id).onSnapshot((snap) => {
if (snapshot.numChildren > 0) {
assignUser(snap)
} else {
// Error Handling
}
})
}
无论文档是否存在于users_unprocessed
or中,此代码都不会给我任何结果users_processed
。
解决方案
如果两个集合都设置正确,您只需要在每个集合上使用 forEach 函数并将它们放在数组或列表或任何您想要的东西上。像这样的东西:
const allUsers = [];
database.collection("users_unprocessed").onSnapshot((querySnapshot) => {
querySnapshot.forEach((doc) => {
allUsers.push(doc.data().name);
});
});
然后您可以对同一列表中的其他集合执行相同操作。如果您不想将它们放在 Array 上,但您有任何其他方法或功能,则只需更改最后一部分。
推荐阅读
- php - 通过数组中的路径更改json中的值
- javascript - 如何在javascript中使用paremt post消息关闭Iframe
- reactjs - 如何使用现有的登录 Chrome 用户配置文件正确设置 VS Code 以在 chrome 中调试?
- git - 在 git 上编写多行提交消息是一种不好的做法吗?
- excel - VBA根据标准提取唯一值
- mongodb - 为什么 PyMongo 在列出集合时给出不支持的投影选项:$substr?
- python - Python __init__ 方法中的 DRY 原理
- javascript - 如何过滤文档中的嵌入文档?
- opencv - cunstom AM57xx 板上的 arago yocto 项目上的 tiovx-app-host 错误
- kubernetes - 在 IBM Cloud Kubernetes Service 中使用 IBM App ID 时未触发认证过程