是否可以在Firestore Cloud功能中获取所有文档?

Jus*_*lle 4 google-cloud-functions google-cloud-firestore

我想使用云函数更新集合中所有文档的值,因为它们取决于创建日期,但查看Cloud Firestore触发器示例,看起来所有事件都只能访问单个文档.有没有办法循环所有文件?

Fra*_*len 12

您通常会在Cloud Functions代码中使用Admin SDK.一旦你有了这个,就像往常一样阅读这个集合.检查firebase文档中的节点示例,读取集合中的所有文档:

const admin = require('firebase-admin');

admin.initializeApp({
    credential: admin.credential.applicationDefault()
});

var db = admin.firestore();

var citiesRef = db.collection('cities');
var allCities = citiesRef.get()
    .then(snapshot => {
        snapshot.forEach(doc => {
            console.log(doc.id, '=>', doc.data());
        });
    })
    .catch(err => {
        console.log('Error getting documents', err);
    });
Run Code Online (Sandbox Code Playgroud)

  • 请注意,如果文档不存在(显示为斜体),则不会返回。如果您想获取集合中每个文档的引用(包括斜体文档),您可以调用cityRef.listDocuments()而不是cityRef.get() (3认同)

小智 8

这是可能的。如果您想将文档放入数组中。没有foreach。

const admin = require('firebase-admin');
admin.initializeApp({
    credential: admin.credential.applicationDefault()
});

const docRef = admin.firestore().collection('cities');
docRef.get()
.then(snapshot => {
    let arrayR = snapshot.docs.map(doc => {
       return doc.data();
    }); 
    res.json(arrayR);        
}).catch(function(error){
    console.log("got an error",error);        
})
Run Code Online (Sandbox Code Playgroud)