gpt4 book ai didi

javascript - Firebase:doc.data() 返回空对象

转载 作者:行者123 更新时间:2023-11-29 20:51:03 24 4
gpt4 key购买 nike

我正在使用 Firebase 云函数获取 Firestore 集合中的所有数据并将其放入 Firebase 实时数据库。

当我在 Firebase 函数模拟器中运行我的代码(在帖子的底部)时,第 9 行的 console.log 打印了一堆与一堆空对象配对的键,比如所以(已编辑实际 ID):

{ 
'<some id>': {},
'<some other id>': {},
<bunch of other entries>...
}

这对我来说没有意义,因为 documentation没有说明为什么它应该返回一个空对象。我的文档确实存在,为什么我无法获取它们的数据?

这是注释了有问题的部分的源代码:

 exports.generateCache = functions.https.onRequest((req, res) => {
admin.firestore().collection('parts').select().get()
.then(snapshot => snapshot.docs)
.then(docs => {
// this is the problematic segment of code
var cache = {}
docs.forEach(doc => {
cache[doc.id] = doc.data()
})
console.log(cache)
return cache
})
.then(cachedData => storeCachedData(cachedData))
.then(() => {
res.send('done!')
res.end()
})
})

最佳答案

如果您在此处查看 firebase docs .查询集合中多个文档的代码示例为:

db.collection("cities").where("capital", "==", true)
.get()
.then(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
// doc.data() is never undefined for query doc snapshots
console.log(doc.id, " => ", doc.data());
});
})
.catch(function(error) {
console.log("Error getting documents: ", error);
});

所以在你的情况下,尝试改变这个:

.then(snapshot => snapshot.docs)
.then(docs => {
// this is the problematic segment of code
var cache = {}
docs.forEach(doc => {
cache[doc.id] = doc.data()
})

对此

.then(snapshot => {

var cache = {}
snapshot.forEach(doc => {
cache[doc.id] = doc.data()
})

关于javascript - Firebase:doc.data() 返回空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51869928/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com