繁体   English   中英

试图从 firebase 获取和安排数据

[英]Trying to get and arrange data from firebase

我正在尝试将从 firebase 获得的聊天安排到对象中。 我得到聊天记录,然后尝试将其安排到一个包含聊天对象和接收者的对象中。

此代码安排聊天,但仅在我刷新 expo 应用程序后才这样做。 上网查了一下,是因为用户和聊天都是状态,到时候还没有设置。

useEffect(() => {
       const chatsSub = onSnapshot(collection(firestore, "Chats"), querySnapshot => {

            const data = []
            querySnapshot.forEach((doc) => {
                data.push(doc.data())
            });
            console.log("Chats: ", data);
            setChats(data)

            const list = []
            chats.forEach(chat => {
                if (chat.members.includes(userId)) {
                    chat.members.forEach(y => {

                        if (y !== userId) {
                            console.log("receiver: " + y)
                            users.forEach(z => {
                                if (z.id === y) {
                                    console.log(z)
                                    list.push({
                                        chat: chat,
                                        acc: z,
                                        user: user
                                    })

                                }
                            })
                            console.log(list)
                        }

                    })
                }

            })

            setUserChats(list)
            console.log("Users Chats: " + userChats)
            
        });
}, [])

但是当我尝试获取用户和聊天时,我正在尝试安排用户聊天。 但是这段代码不起作用。 它只是抛出一个错误 instea

useEffect(() => {
       const list = []
            doc.data().chatList.forEach(chatId => {
                const chatSub = onSnapshot(doc(firestore, "Chats", chatId), (doc1) => {
                    doc1.data().members.forEach(member => {
                        if (member !== userId){
                            const userSub = onSnapshot(doc(firestore, "Users", member), (doc2) => {
                                list.push({
                                    chat: doc1.data(),
                                    acc: doc2.data()
                                })
                            })
                        }
                    })
                })
            })

            setUserChats(list)
}, [])

我不知道是不是因为我不能在另一个 onSnapshot 中有一个 onSnapshot

一旦更新了两个状态值,您就可以构建聊天列表。 将构建聊天列表的逻辑移动到 useEffect 挂钩中,并为聊天和用户状态添加依赖项。

参考下面的代码。

  useEffect(() => {
    if (chats.length && users.length) {
      const list = [];
      chats.forEach((chat) => {
        if (chat.members.includes(userId)) {
          chat.members.forEach((y) => {
            if (y !== userId) {
              console.log("receiver: " + y);
              users.forEach((z) => {
                if (z.id === y) {
                  console.log(z);
                  list.push({
                    chat: chat,
                    acc: z,
                    user: user
                  });
                }
              });
              console.log(list);
            }
          });
        }
      });

      setUserChats(list);
    }
  }, [chats, users]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM