web-dev-qa-db-fra.com

Comment exécuter une requête depuis l'intérieur de la fonction Cloud?

J'aimerais effectuer une requête sur ma base de données une fois qu'une fonction cloud de mon application Firebase est appelée.

Disons que j'ai un certain déclencheur sur la base de données, considérons l'exemple fourni dans le guide de démarrage sur Firebase .

// Listens for new messages added to /messages/:pushId/original and creates an
// uppercase version of the message to /messages/:pushId/uppercase
exports.makeUppercase = functions.database.ref('/messages/{pushId}/original')
  .onWrite(event => {
      // Grab the current value of what was written to the Realtime Database.
      const original = event.data.val();
      console.log('Uppercasing', event.params.pushId, original);
      const uppercase = original.toUpperCase();
      // I'D LIKE TO PERFORM A QUERY HERE, JUST A SIMPLE RETRIEVE BASED ON THE ID PROVIDED
     // You must return a Promise when performing asynchronous tasks inside a Functions such as
     // writing to the Firebase Realtime Database.
     // Setting an "uppercase" sibling in the Realtime Database returns a Promise.
     return event.data.ref.parent.child('uppercase').set(uppercase);
});

Quels modules dois-je importer, le cas échéant? Comment puis-je effectuer la requête sur la base de données?

Merci d'avance pour ta réponse!

10
starscream

Vous pouvez utiliser le Node.js Admin SDK pour cela:

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

exports.makeUppercase = functions.database()
  .ref('/messages/{pushId}/original')
  .onWrite(event => {
    return admin.database().ref('/other')
      .orderByChild('id').equalTo(event.params.pushId)
      .once('value').then(snapshot => {
        // there, I queried!
      });
  });
22
Michael Bleigh