Is there a way to call a Firebase server "function" from within a client app, say with Angular 2?

Stevie Star picture Stevie Star · Apr 6, 2017 · Viewed 10.4k times · Source

So Firebase offers something called "functions", which is essentially a nodejs server that has all of the Firebase stuff preconfigured and has all the scaling automatically handled. I'm wondering, is there a way to call a function inside of the "functions" index.js file from an angular 2 app?

I need to utilize the firebase-admin npm module to check if a user's email exists and then grab the uid for that user, if it does.

According to this link, I can setup my index.js file such as:

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

// I'm actually not sure if this is how you do this part:
exports.getUserByEmail = (email) => {
  return admin.auth().getUserByEmail(email);
}

Is there a way I can call getUserByEmail() inside of a component in my Angular 2 app?

Thanks in advance!

Answer

Doug Stevenson picture Doug Stevenson · Apr 6, 2017

There are two primary ways of invoking a Cloud Function directly from client code.

You can use a database trigger which responds when some location in your Firebase project's Realtime Database changes.

You can also use an HTTP trigger which response when you access an HTTP endpoint. For a web app, you use whatever method you want to invoke an XHR transaction.

Whichever one you use is up to the architecture of your app, and to some degree your preference. There are plenty of samples of both, and more, in the provided sample code.

You can definitely use the Firebase admin SDK to access your project from within your function code. Many of the samples do exactly that.