2016-11-05 4 views
4

Ich werde einen flexiblen Suchindex neben meiner Firebase-Anwendung implementieren, damit Ad-hoc-Volltextsuchen und Geo-Suchen besser unterstützt werden können. Daher muss ich die Firebase-Daten mit dem Elastic Search Index synchronisieren, und alle Beispiele erfordern einen Serverprozess, der auf Firebase-Ereignisse wartet.Können Sie Google Cloud Functions über ein Firebase-Ereignis ohne einen Server auslösen?

z.B. https://github.com/firebase/flashlight

Es wäre jedoch großartig, wenn ich nur eine Google Cloud-Funktion durch einen Einsatz in einem Firebase-Knoten ausgelöst haben könnte. Ich sehe, dass Google Cloud-Funktionen verschiedene Auslöser hat: Pub Sub, Storage und Direct ... kann jeder dieser zu einem Firebase-Knoten-Ereignis ohne einen Zwischenserver überbrücken?

Antwort

12

firebaser hier

Wir Cloud Functions for Firebase soeben erschienen. Dadurch können Sie JavaScript-Funktionen auf den Servern von Google als Reaktion auf Firebase-Ereignisse ausführen (z. B. Datenbankänderungen, Anmeldung von Benutzern und vieles mehr).

+0

cool, ein Javascript schreiben wird, check it out - Sie haben einen Link zu den Dias? Ich sehe es nicht in der Github Readme – MonkeyBonkey

+0

@Frank Irgendein Update auf diesem? – Hamid

+0

Würde gerne sehen, dass dies umgesetzt wird, zusammen mit einer offiziellen Möglichkeit zum Lesen/Schreiben in DataStore von einer Firebase Web App (langfristige db Speicher, wenn Echtzeit nicht benötigt wird) – Gary

0

ja, Sie eine Google Cloud-Funktionen über Feuerbasis Ereignis ohne einen Server auslösen können. Gemäß den Dokumenten ermöglicht Firebase beispielsweise das Senden von Benachrichtigungen mithilfe einer Cloud-Funktion, wenn ein Benutzer in die Firebase-Datenbank schreibt.

Dafür hatte ich, wie unten

'use strict'; 

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

exports.sendNotification = functions.database.ref('/articles/{articleId}') 
     .onWrite(event => { 

     // Grab the current value of what was written to the Realtime Database. 
     var eventSnapshot = event.data; 
     var str1 = "Author is "; 
     var str = str1.concat(eventSnapshot.child("author").val()); 
     console.log(str); 

     var topic = "android"; 
     var payload = { 
      data: { 
       title: eventSnapshot.child("title").val(), 
       author: eventSnapshot.child("author").val() 
      } 
     }; 

     // Send a message to devices subscribed to the provided topic. 
     return admin.messaging().sendToTopic(topic, payload) 
      .then(function (response) { 
       // See the MessagingTopicResponse reference documentation for the 
       // contents of response. 
       console.log("Successfully sent message:", response); 
      }) 
      .catch(function (error) { 
       console.log("Error sending message:", error); 
      }); 
     }); 
Verwandte Themen