我试图将查询快照中每个文档中的文档ID
添加到我要推送的数组中相应的元素上,然后提交给状态。
我需要状态为ID
的文档,以便可以通过id查询特定文档以进行更新。
我目前正在像Google文档建议的那样使用forEach()
遍历快照,但是我试图使用map()
将每个元素放入我的cards =[]
数组中,同时还包括文档.id放在元素中的某个地方。
actions: {
async nuxtServerInit(vuexContext, context) {
let cards = []
await db
.collection('Assets')
.get()
.then(snapshot => {
snapshot.forEach(doc => {
cards.map(doc.data())
})
vuexContext.commit('setCards', cards)
})
},
目前我仍在状态
loadedCards:Array[1]
0:Object
authors:"noFace1"
description:"hopefully this fucking works"
imageurl:Array[1]
slug:"the-big-test-bunny"
title:"The big test bunny"
type:"Video"
user:"VbomJvANYDNe3Bek0suySs1L8oy1"
我需要在状态中包含另一个属性id: xblkujoifduodsifl
(只是示例ID)。
答案 0 :(得分:1)
为此更改此行cards.map(doc.data())
cards.map(doc => {
const id = doc.id
const data = doc.data()
return Object.assign({}, id, { ...data })
})
除非您明确复制ID,否则ID不属于文档
答案 1 :(得分:0)
这是我的有效代码中的详细解决方案:
.db
.collection("organizations")
.doc(activeOrganization)
.collection("people")
.get()
.then((snapshot) => {
if (!snapshot.empty) {
let people = [];
snapshot.forEach((doc) => {
let dict = { ...doc.data(), id: doc.id};
people.push(dict);
});
console.log(people);
} else {
reject("No document corresponding to the query!");
}
})
.catch((err) => reject(err));