Gcp/Firebase/Firestore/async
提供: 初心者エンジニアの簡易メモ
目次
通常のfirestore取得をasync/awaitに変更する方法
functionにasyncを追加し、firestoreのget()にawaitを追加すればよい。
async/awaitを使わないfirestoreのサンプル
const functions = require('firebase-functions'); const admin = require('firebase-admin'); admin.initializeApp(); exports.db = functions .region('asia-northeast1') .https.onRequest((request, response) => { admin.firestore().collection('scores') .orderBy('maxKanaSpeed', 'desc') .limit(50) .get() .then((snapshot) => { var scores = snapshot.docs.map(x => x.data()); var json = JSON.stringify(scores); response.send("json" + json); }); });
async/awaitを使うfirestoreのサンプル
exports.dbasync = functions .region('asia-northeast1') .https.onRequest(async(request, response) => { var snapshot = await admin.firestore().collection('scores') .orderBy('maxKanaSpeed', 'desc') .limit(50) .get(); var scores = snapshot.docs.map(x => x.data()); var json = JSON.stringify(scores); response.send("json" + json); });
dbのsum
exports.helloWorld = functions .region('asia-northeast1') .https.onRequest(async(request, response) => { const count = 50; var snapshot = await admin.firestore().collection('users') .orderBy('age', 'desc') .limit(count) .get(); const sum = snapshot.docs .map(doc => doc.data().age) .reduce((prev, current) => prev + current, 0); console.log( "sum=" + sum.toString() ); });