web-dev-qa-db-ja.com

Cloud関数内からクエリを実行する方法は?

Firebaseアプリのクラウド関数が呼び出されたら、データベースでクエリを実行したいのですが。

データベースに特定のトリガーがあるとしましょう。 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);
});

どのmodulesがある場合、インポートする必要がありますか? DBでクエリを実行するにはどうすればよいですか?

よろしくお願いします!

10
starscream

これには Node.js Admin SDK を使用できます。

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