将 firebase 文档添加到列表

Adding firebase documents to a list

所以目前我有一个看起来像这样的集合:https://i.stack.imgur.com/lxYoA.png。所以在这个集合中它有一个由嵌套列表组成的列表。但我基本上想做一个 for 循环,将所有这些添加到一个列表中,但我在下面做的只是将一个空列表添加到 firebase?

在 firebase 中,我将单独的列表添加到另一个列表,因为文档由我在下面完成的列表组成,它会创建我上面的屏幕截图。

const snapshot = await fire.firestore()
        .collection("groupsCategory")
        .doc(groupID)
        .collection('events')
        .doc(eventID)
        .collection("memberPicks").get()
        
        const data = snapshot.docs.map(doc => doc.data())
        snapshot.docs.map(doc => doc.data())



        const db = fire.firestore();
     
        const likesList = [];

        snapshot.docs.forEach((doc) => {
            likesList.push(doc.data())

        })

正如您在此处看到的,我正在尝试获取列表中的每一项并将其放在一个列表中,而不是嵌套列表的列表中。我哪里错了?

  const arr1 = likesList.flat();

        const newArr = [];
        for (let i = 0; i < arr1; i++) {
            newArr.push(arr1[i])
          }

            db.collection("eventLikes")
            .doc(eventID)
            .set({
              ActivityLikes: newArr
            })
            
        }

据我了解你的问题,你想设置一个没有 userLikes 嵌套列表的文档。为了能够实现这一点,您应该迭代要在其中获取 userLikes 的对象并将其推入数组的数据。请参阅下面的代码:

var userLikes = [];

const snapshot = await db
  .collection("groupsCategory")
  .doc(groupID)
  .collection('events')
  .doc(eventID)
  .collection("memberPicks").get()
  
snapshot.docs.forEach((doc) => {
  // Gets the List of `ActivityLikes`
  const activityLikes = doc.data().ActivityLikes;
  
  // Iterate the List of `ActivityLikes`
  activityLikes.forEach((activityLike) => {
    // Push the data object of `userLikes` to the initiated array: `userLikes`
    userLikes.push(activityLike.userLikes[0]);
  })
})

// This sets the data as follows: 
// Map (ActivityLikes) > Array (userLikes) > Map (userLikes Object)
db.collection("eventLikes")
  .doc('eventID')
  .set({
    ActivityLikes: {userLikes}
  })

在上面的代码上添加了一些注释以便更好地理解。

结果截图如下:


查看这些文档以更好地理解使用对象和数组: