首页 > 解决方案 > 如何使用 ReactJS 在 Firestore 的不同集合中查找用户?

问题描述

我有两个系列:users_unprocessedusers_processed. 当用户是新用户时,他将被添加到users_unprocessed集合中。如果他被处理,他将被删除并添加到users_processed.

我想创建一个包含所有用户的列表。因此我需要在users_processedor中找到一个用户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_unprocessedor中,此代码都不会给我任何结果users_processed

标签: reactjsgoogle-cloud-firestore

解决方案


如果两个集合都设置正确,您只需要在每个集合上使用 forEach 函数并将它们放在数组或列表或任何您想要的东西上。像这样的东西:

const allUsers = [];
database.collection("users_unprocessed").onSnapshot((querySnapshot) => {
    querySnapshot.forEach((doc) => {
        allUsers.push(doc.data().name);
    });
});

然后您可以对同一列表中的其他集合执行相同操作。如果您不想将它们放在 Array 上,但您有任何其他方法或功能,则只需更改最后一部分。


推荐阅读