「Gcp/Firebase/Firestore/async」の版間の差分
提供: 初心者エンジニアの簡易メモ
(ページの作成:「firestoreをasyncを使って取得する」) |
(→dbのsum) |
||
(同じ利用者による、間の4版が非表示) | |||
行1: | 行1: | ||
− | + | ==通常のfirestore取得をasync/awaitに変更する方法== | |
+ | functionにasyncを追加し、firestoreのget()にawaitを追加すればよい。 | ||
+ | |||
+ | ==async/awaitを使わないfirestoreのサンプル== | ||
+ | <pre> | ||
+ | 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); | ||
+ | }); | ||
+ | }); | ||
+ | </pre> | ||
+ | |||
+ | ==async/awaitを使うfirestoreのサンプル== | ||
+ | <pre> | ||
+ | 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); | ||
+ | }); | ||
+ | </pre> | ||
+ | |||
+ | ==dbのsum== | ||
+ | <pre> | ||
+ | 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() ); | ||
+ | }); | ||
+ | </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() ); });