Skip to content

fny/node-firebase-rest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Firebase REST Client for Node 🔥

Build Status npm version Dependencies

  • Query support with proper JSON encoding.
  • Requests with the WHATWG Fetch API via node-fetch.
  • You can bring your own Promise library with FirebaseREST.setPromise(Promise).
  • Typescript (if you're into that.)

Installation

npm install firebase-rest --save

Usage

// Don't forget `.default` at the end! (We use ES6 modules from the future.)
const FirebaseREST = require('firebase-rest').default;

Instantiate either the FirebaseREST.JSONClient or the FirebaseREST.Client, and start making calls. What's the difference?

  • JSONClient promises a Fetch-like response where the #body is parsed JSON
  • Client promises a standards compliant Fetch response

Confused yet? This #get example should make the difference clear:

// First instantiate a client with any default query parameters such as auth
var standardClient =
  new FirebaseREST.Client('https://app.firebaseio.com', { auth: 'SECRET' });

var jsonClient =
  new FirebaseREST.JSONClient('https://app.firebaseio.com', { auth: 'SECRET' });

// Then start making requests
standardClient.get('/')
  .then(res => res.json())
  .then(json => /* do something with the json */);

jsonClient.get('/')
  .then(res => /* do something with the res.body */);

If you're still confused, see "Client vs JSONClient" below for a deep dive.

You can make the following requests with either client:

// Reading data (GET)
client.get('/path');
client.get('/path', additionalQueryParams);

// Writing data (PUT)
client.put('/path', payload);
client.put('/path', payload, additionalQueryParams);

// Updating data (PATCH)
client.patch('/path', payload);
client.patch('/path', payload, additionalQueryParams);

// Pushing data (POST)
client.post('/path', payload);
client.post('/path', payload, additionalQueryParams);

// Removing data (DELETE)
client.delete('/path');
client.delete('/path', additionalQueryParams);
  • additionalQueryParams: Additional URL params to merge with the default params provided (e.g. { orderBy: '$value', limitToFirst: 2 }, { shallow: true }.)
  • '/path': Path to a part your DB, no / required.
  • payload: Object to write to Firebase

FirebaseREST also provides aliases to match the semantics of the official Firebase JavaScript library:

client.set === client.put;       // =>  true
client.update === client.patch;  // =>  true
client.push === client.post;     // =>  true
client.remove === client.delete; // =>  true

Client vs JSONClient

You can see the differences when comparing two GET requests. TLDR, you probably want to use JSONClient: it's supremely convenient.

//
// Standard Client
//

const responsePromise = client.get('/').then(res).then(console.log);
// => Body {
//   url: 'https://app.firebaseio.com/.json?auth=SECRET',
//   status: 200,
//   statusText: 'OK',
//   headers: Headers { ... },
//   ok: true,
//   body: PassThrough { ... },
//   ... }
responsePromise.then(res => res.json()).then(console.log);
// => { db: 'contents' }

//
// JSON Client
//

jsonClient.get('/').then(console.log);
// => JSONResponse {
//   url: 'https://app.firebaseio.com/.json?auth=SECRET',
//   status: 200,
//   statusText: 'OK',
//   headers: Headers { ... },
//   ok: true
//   body:
//    { db: 'contents' }

More Documentation and Examples

See the source and the specs. There be hidden treasure.

About

Firebase REST Client for Node.js

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published