Skip to content

Instantly share code, notes, and snippets.

@edwardfung123
Last active August 4, 2017 05:13
Show Gist options
  • Select an option

  • Save edwardfung123/41e558f03b4de2a153211ab8b7d749ad to your computer and use it in GitHub Desktop.

Select an option

Save edwardfung123/41e558f03b4de2a153211ab8b7d749ad to your computer and use it in GitHub Desktop.
Firebase cloud functions
const functions = require('firebase-functions');
// Create a function that trigger by HTTP
exports.helloWorld = functions.https.onRequest((request, response) => {
// console.log/info/warn/error will send the message to Cloud Logging
console.log('In helloworld!');
response.send("Hello from Firebase!");
});
// The Firebase Admin SDK to access the Firebase Realtime Database.
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
// Take the text parameter passed to this HTTP endpoint and insert it into the
// Realtime Database under the path /messages/:pushId/original
exports.addMessage = functions.https.onRequest((req, res) => {
// Grab the text parameter.
const original = req.query.text;
console.log(`original = ${original}`);
// Push the new message into the Realtime Database using the Firebase Admin SDK.
admin.database().ref('/messages').push({original: original}).then(snapshot => {
// Redirect with 303 SEE OTHER to the URL of the pushed object in the Firebase console.
console.log(`ref = ${snapshot.ref}`);
res.redirect(303, snapshot.ref);
});
});
// 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();
// 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);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment