将对象推送到数组反应本机

push object to array react native

我需要获取在 firestore 中具有 serviceClientID 字段的特定用户。

那些,我将它插入数组并将其放入我的状态聊天 (setChat)。

但问题是只有一个用户进入我的状态,而我有两个用户使用此字段。

为什么只有1个进入,没有2个?

代码如下:

firebase.auth().onAuthStateChanged(async ({ uid }) => {
          const servicesCollection = await firestore()
            .collection('Providers')
            .doc(uid)
            .collection('ServiceHistory')
            .get();
          servicesCollection.docs.forEach(async item => {
            if (item.exists && item.data().serviceClientID) {
              const clientsCollection = await firestore()
                .collection('Clients')
                .doc(item.data().serviceClientID)
                .get();

              // if (item.data().serviceClientID === clientsCollection.id) {
              const values = {
                id: clientsCollection.id,
                name: clientsCollection.data().name.last,
                uid,
              };
              const arr = [];

              arr.push(values);
              // }
              console.log('arrayay', arr);

              setChats(arr);
            }
          });
        });

因为每次循环都会清空一个数组。 您必须从函数中获取 {arr} 。然后你需要把数据推进去。

const firebaseFunc =  () => {
      let arr = [];

      firebase.auth().onAuthStateChanged(async ({ uid }) => {
        const servicesCollection = await firestore()
            .collection('Providers')
            .doc(uid)
            .collection('ServiceHistory')
            .get();
        servicesCollection.docs.forEach(async item => {
          if (item.exists && item.data().serviceClientID) {
            const clientsCollection = await firestore()
                .collection('Clients')
                .doc(item.data().serviceClientID)
                .get();
            arr.push({
              id: clientsCollection.id,
              name: clientsCollection.data().name.last,
              uid,
            });
          });
      });

      setChats(arr);
      console.log('arrayay', arr);
    }