Firebase

Read data from Realtime Database.

import db from '../../lib/db-admin';

export default (req, res) => {
  if (!req.query.id) {
    return res.status(400).json({
      error: 'Missing "id" query parameter'
    });
  }

  const ref = db.ref('table').child(req.query.id);

  return ref.once('value', (snapshot) => {
    res.status(200).json({
      total: snapshot.val()
    });
  });
};
// lib/db-admin.js

const admin = require('firebase-admin');

try {
  admin.initializeApp({
    credential: admin.credential.cert({
      client_email: process.env.FIREBASE_CLIENT_EMAIL,
      private_key: process.env.FIREBASE_PRIVATE_KEY,
      project_id: 'your-project-id'
    }),
    databaseURL: 'https://your-project-id.firebaseio.com'
  });
} catch (error) {
  /*
   * We skip the "already exists" message which is
   * not an actual error when we're hot-reloading.
   */
  if (!/already exists/u.test(error.message)) {
    console.error('Firebase admin initialization error', error.stack);
  }
}

module.exports = admin.database();

Usage

1

Create Firebase Account

First, create a Firebase account.

2

Retrieve Service Account

  1. If you do not have a Firebase account, create one first.
  2. Create a new project.
  3. Navigate to "Database" and click "Create Database".
    Create Firebase Database
  4. Start in test mode and click next.
    Create Firebase Database
  5. Choose your database location and click done.
    Create Firebase Database
  6. In the top left, click on "Project Settings".
    Create Firebase Database
  7. Navigate to "Service Accounts" tab and click "Generate new private key". Save the .json file. You will need this later.
    Create Firebase Database

You have successfully set up a real-time database, as well as generated credentials for your serverless function to connect to Firebase.

3

Add Environment Variables

To securely access the API, we need to include the secret with each request. We also do not want to commit secrets to git. Thus, we should use an environment variable. Learn how to add environment variables in Vercel.