web-dev-qa-db-ja.com

Firestore Cloud Functionですべてのドキュメントを取得することは可能ですか?

作成日に依存するクラウド関数を使用してコレクション内のすべてのドキュメントの値を更新したいのですが、Cloud Firestoreトリガーの例を見ると、すべてのイベントが1つのドキュメントにしかアクセスできないようです。すべてのドキュメントをループする方法はありますか?

5
Justin Dachille

通常、CloudFunctionsコードではそのためにAdminSDKを使用します。それができたら、いつものようにコレクションを読むだけです。 コレクションからすべてのドキュメントを読み取る際の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);
    });
16

それが可能だ。ドキュメントを配列内に取得したい場合。 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);        
})
3
Noah Stevan