What is firebase-admin?
The firebase-admin npm package is a server-side library that allows Node.js applications to interact with Firebase services such as Firestore, Firebase Realtime Database, Firebase Authentication, and Firebase Cloud Messaging. It provides administrative privileges to perform operations like creating and managing users, setting security rules, and accessing database services programmatically.
What are firebase-admin's main functionalities?
Authentication
This feature allows you to create and manage users in Firebase Authentication. The code sample demonstrates how to create a new user with specific attributes.
admin.auth().createUser({
email: 'user@example.com',
emailVerified: false,
password: 'secretPassword',
displayName: 'John Doe',
photoURL: 'http://www.example.com/12345678/photo.png',
disabled: false
})
.then(function(userRecord) {
console.log('Successfully created new user:', userRecord.uid);
})
.catch(function(error) {
console.log('Error creating new user:', error);
});
Database
This feature enables you to interact with Firestore, a NoSQL database. The code sample shows how to add a new document to a collection in Firestore.
var db = admin.firestore();
var docRef = db.collection('users').doc('alovelace');
var setAda = docRef.set({
first: 'Ada',
last: 'Lovelace',
born: 1815
});
Realtime Database
This feature allows you to interact with Firebase Realtime Database. The code sample demonstrates how to set data in the database.
var db = admin.database();
var ref = db.ref('server/saving-data/fireblog');
var usersRef = ref.child('users');
usersRef.set({
alanisawesome: {
date_of_birth: 'June 23, 1912',
full_name: 'Alan Turing'
},
gracehop: {
date_of_birth: 'December 9, 1906',
full_name: 'Grace Hopper'
}
});
Cloud Messaging
This feature is used to send notifications and messages to users through Firebase Cloud Messaging. The code sample illustrates how to send a message to a device with a specific registration token.
var registrationToken = 'YOUR_REGISTRATION_TOKEN';
var message = {
data: {
score: '850',
time: '2:45'
},
token: registrationToken
};
admin.messaging().send(message)
.then((response) => {
console.log('Successfully sent message:', response);
})
.catch((error) => {
console.log('Error sending message:', error);
});
Other packages similar to firebase-admin
parse-server
Parse Server is an open-source version of the Parse backend that can be deployed to any infrastructure that can run Node.js. It provides functionalities similar to Firebase, such as user authentication, database operations, and push notifications. Compared to firebase-admin, Parse Server is self-hosted and offers more flexibility in terms of infrastructure.
aws-sdk
The AWS SDK for JavaScript allows developers to interact with AWS services such as DynamoDB, Cognito for authentication, and SNS for notifications. While it provides similar functionalities, it is part of the broader AWS ecosystem and requires more setup and management compared to firebase-admin, which is more focused on ease of use and rapid development.
azure-sdk-for-js
The Azure SDK for JavaScript enables interaction with Azure services like Azure Cosmos DB, Azure Active Directory for authentication, and Azure Notification Hubs for messaging. Similar to AWS SDK, it is part of a larger cloud platform and offers extensive services beyond what firebase-admin provides, but with potentially more complexity in setup and management.
firebase-admin
Programmatically instantiate and modify Firebase instances.
![Build Status](https://travis-ci.org/casetext/firebase-admin.svg?branch=master)
Why?
For automated testing, mostly.
Install
npm install --save firebase-admin
Use
var FirebaseAccount = require('firebase-admin');
var Firebase = require('firebase');
var account = new FirebaseAccount(process.env.FIREBASE_ADMIN_TOKEN);
account.createDatabase('new-instance-name')
.then(function(instance) {
var fb = new Firebase(instance.toString());
})
.catch(function(err) {
console.error('Oops, error creating instance:', err);
});
Documentation
There's JSDoc-generated API documentation.
Develop
git clone https://github.com/casetext/firebase-admin
cd firebase-admin
npm install
npm test
Please jshint
. That is all.
Caveats
- This package uses Firebase's own APIs. You can't do anything with it you can't
already do in the admin tools and Forge.
- Do not abuse the Firebase service. It's amazing and the people who work there
are amazing.
I :heartbeat: Firebase
Big whoop, wanna fight about it?