「Gcp/Firebase/Firestore/async」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→dbのsum) |
|||
行39: | 行39: | ||
==dbのsum== | ==dbのsum== | ||
+ | <pre> | ||
exports.helloWorld = functions | exports.helloWorld = functions | ||
.region('asia-northeast1') | .region('asia-northeast1') | ||
行52: | 行53: | ||
console.log( "sum=" + sum.toString() ); | console.log( "sum=" + sum.toString() ); | ||
}); | }); | ||
+ | </pre> |
2020年3月6日 (金) 01:25時点における最新版
目次
通常の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() ); });