将 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}
})
在上面的代码上添加了一些注释以便更好地理解。
结果截图如下:
查看这些文档以更好地理解使用对象和数组:
所以目前我有一个看起来像这样的集合: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}
})
在上面的代码上添加了一些注释以便更好地理解。
结果截图如下:
查看这些文档以更好地理解使用对象和数组: