我是一名Android开发人员,最近我开始了一个基于firebase云函数和firestore数据库的项目。我正在编写一个HTTP触发器函数,该函数将接受两个参数,并将该参数值与firestore数据值进行比较,如果值匹配,则返回true或false的响应。
重复问题:
是的,已经提出了一些与我的问题相关的问题,但它们并不相似:
Firebase文档显示:
云Firestore支持创建、更新、删除和写入事件
我想从HTTP触发器中读取firestore值。
我尝试过的东西:
exports.userData = functions.https.onRequest((req, res) => {
const user = req.query.user;
const pass = req.query.pass;
});
我几乎被困在这部分了。任何帮助都将不胜感激。谢谢
附注:我对JS/TypeScript/NodeJS的相关知识非常有限
发布于 2018-03-27 22:51:26
有点晚了,但对于任何其他偶然发现这一点的人来说。
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)
})
});
发布于 2018-08-31 05:25:11
多亏了Ruan's answer,这里有一个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-02-28 13:20:46
在2022年,我尝试以“模块化”的方式来做这件事,就像firebase在>= 9版本中所做的那样。感谢Ruan的启发。
因此,下面是我如何制作它的(类似于下面):
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)
})
});
https://stackoverflow.com/questions/48375904
复制相似问题