私はAndroid開発者です。最近、firebaseクラウド関数とfirestoreデータベースに基づいたプロジェクトに取り組み始めました。2つのパラメーターを取り、それを比較するHTTPトリガー関数を書いています。パラメータ値をfirestoreデータ値と組み合わせ、値が一致する場合はtrueまたはfalseの応答を返します。
重複した質問:
はい、私に関連してすでに質問がいくつかありますが、それらは似ていません:
Firebase Docsは言う:
Cloud Firestoreは、イベントの作成、更新、削除、書き込みをサポートしています
HTTPトリガーからfirestore値を読み取りたい。
私が試したこと:
exports.userData = functions.https.onRequest((req, res) => {
const user = req.query.user;
const pass = req.query.pass;
});
私はこの部分でほとんど立ち往生しています。どんな助けも大歓迎です。ありがとう
追伸JS/TypeScript/NodeJSに関連する知識が非常に限られている
少し遅れますが、他の誰かがこれにつまずいた。
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.someMethod = functions.https.onRequest((req, res) => {
var stuff = [];
var db = admin.firestore();
db.collection("Users").doc("7vFjDJ63DmhcQiEHwl0M7hfL3Kt1").collection("blabla").get().then(snapshot => {
snapshot.forEach(doc => {
var newelement = {
"id": doc.id,
"xxxx": doc.data().xxx,
"yyy": doc.data().yyy
}
stuff = stuff.concat(newelement);
});
res.send(stuff)
return "";
}).catch(reason => {
res.send(reason)
})
});
Ruanの答え のおかげで、ここにonCall(..)
バリエーションの例があります:
exports.fireGetColors = functions.https.onCall((data, context) => {
return new Promise((resolve, reject) => {
var colors = {};
var db = admin.firestore();
db.collection('colors')
.get()
.then(snapshot => {
snapshot.forEach(doc => {
var key = doc.id;
var color = doc.data();
color['key'] = key;
colors[key] = color;
});
var colorsStr = JSON.stringify(colors, null, '\t');
console.log('colors callback result : ' + colorsStr);
resolve(colors);
})
.catch(reason => {
console.log('db.collection("colors").get gets err, reason: ' + reason);
reject(reason);
});
});
});