[英]Read data from Cloud firestore with Firebase cloud function
[英]Read data from cloud firestore with firebase cloud function?
我是一名 Android 開發人員,最近我開始從事一個基於 firebase 雲函數和 firestore 數據庫的項目。 我正在編寫一個 HTTP 觸發器 function,它將采用兩個參數並將該參數值與 firestore 數據值進行比較,如果該值匹配,則返回 true 或 false 的響應。
重復問題:
是的,已經提出了一些與我相關的問題,但它們並不相似:
Firebase 文檔說:
Cloud Firestore 支持創建、更新、刪除和寫入事件
我想從 HTTP 觸發器中讀取 firestore 值。
我試過的:
exports.userData = functions.https.onRequest((req, res) => {
const user = req.query.user;
const pass = req.query.pass;
});
我幾乎停留在這部分。 任何幫助將不勝感激。 謝謝
PS 我對 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)
})
});
感謝阮的回答,這里有一個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);
});
});
});
在 2022 年,我正在嘗試以“模塊化”的方式來做這件事,就像 firebase 對版本 >= 9 所做的那樣。也使用 typescript 作為補充:)。 感謝阮的靈感。
所以,這就是我的制作方法(類似於以下內容):
import * as functions from "firebase-functions";
import { getFirestore } from "firebase-admin/firestore";
import { initializeApp } from "firebase-admin/app";
initializeApp(functions.config().firebase);
export const someMethod = functions.https.onRequest((req, res) => {
let stuff: any[] = [];
let db = getFirestore();
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)
})
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.