我正在使用Firebase Cloud Function来获取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()
})
})
答案 0 :(得分:2)
如果您在此处检查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()
})
答案 1 :(得分:0)
Firestore快照到对象:
true