首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用firebase云函数读取云firestore中的数据?

使用firebase云函数读取云firestore中的数据?
EN

Stack Overflow用户
提问于 2018-01-22 14:40:37
回答 3查看 25.6K关注 0票数 30

我是一名Android开发人员,最近我开始了一个基于firebase云函数和firestore数据库的项目。我正在编写一个HTTP触发器函数,该函数将接受两个参数,并将该参数值与firestore数据值进行比较,如果值匹配,则返回true或false的响应。

重复问题:

是的,已经提出了一些与我的问题相关的问题,但它们并不相似:

  1. Firestore + cloud functions: How to read from another document
  2. Firebase HTTP Cloud Functions - Read database once

Firebase文档显示

云Firestore支持创建、更新、删除和写入事件

我想从HTTP触发器中读取firestore值。

我尝试过的东西:

代码语言:javascript
复制
exports.userData = functions.https.onRequest((req, res) => {

 const user = req.query.user;
 const pass = req.query.pass;
});

我几乎被困在这部分了。任何帮助都将不胜感激。谢谢

附注:我对JS/TypeScript/NodeJS的相关知识非常有限

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-03-27 22:51:26

有点晚了,但对于任何其他偶然发现这一点的人来说。

代码语言:javascript
复制
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)
    })
});
票数 69
EN

Stack Overflow用户

发布于 2018-08-31 05:25:11

多亏了Ruan's answer,这里有一个onCall(..)变体的例子:

代码语言:javascript
复制
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);
          });
    });

});
票数 8
EN

Stack Overflow用户

发布于 2022-02-28 13:20:46

在2022年,我尝试以“模块化”的方式来做这件事,就像firebase在>= 9版本中所做的那样。感谢Ruan的启发。

因此,下面是我如何制作它的(类似于下面):

代码语言:javascript
复制
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)
    })
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48375904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档