web-dev-qa-db-fra.com

Lire les données du cloud firestore avec la fonction cloud de Firebase?

Je suis un développeur Android et récemment j'ai commencé à travailler sur un projet basé sur les fonctions cloud de Firebase et la base de données firestore. J'écris une fonction de déclenchement HTTP qui prendra deux paramètres et comparera cela valeur du paramètre avec la valeur de données firestore et si la valeur correspond, renvoyer une réponse true ou else false.

Question en double:

Oui, certaines questions ont déjà été posées concernant les miennes, mais elles ne sont pas similaires:

  1. Firestore + fonctions cloud: comment lire à partir d'un autre document

  2. Firebase HTTP Cloud Functions - Read database once

Docs Firebase dit :

Cloud Firestore prend en charge la création, la mise à jour, la suppression et l'écriture d'événements

Je veux lire la valeur du firestore à partir du déclencheur HTTP.

Ce que j'ai essayé:

exports.userData = functions.https.onRequest((req, res) => {

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

Je suis à peu près coincé dans cette partie. Toute aide sera fortement appréciée. Merci

P.S. J'ai des connaissances très limitées liées à JS/TypeScript/NodeJS

11

un peu tard, mais pour quelqu'un d'autre trébucher sur ce point.

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)
    })
});
31
Ruan

Grâce à réponse de Ruan , voici un exemple de variation de 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);
          });
    });

});
3
Gene Bo