Read data from Realtime Database.

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

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

  const ref = db.ref('table').child(;

  return ref.once('value', (snapshot) => {
      total: snapshot.val()
// lib/db-admin.js

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

try {
    credential: admin.credential.cert({
      client_email: process.env.FIREBASE_CLIENT_EMAIL,
      private_key: process.env.FIREBASE_PRIVATE_KEY,
      project_id: 'your-project-id'
    databaseURL: ''
} 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();



Create Firebase Account

First, create a Firebase account.


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".
  4. Start in test mode and click next.
  5. Choose your database location and click done.
  6. In the top left, click on "Project Settings".
  7. Navigate to "Service Accounts" tab and click "Generate new private key". Save the .json file. You will need this later.

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


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.