rx-firebase

0.5.0 • Public • Published

Rx Firebase

Build Status Coverage Status Dependency Status

Extends Firebase websocket client with RxJS methods.

Install

npm install rx-firebase firebase@3 rxjs

Usage

Extends firebase using RxJS (any ES stage 1 Observable supporting map, merge and scan operators could be used):

const rxFirebase = require('rx-firebase');
const firebase = require('firebase');
const rx = require('rxjs');
 
rxFirebase.extend(firebase, rx.Observable);

You can then observe auth changes:

firebase.auth().observeAuthState().subscribe(
  user => console.log(user)
)

Or observe database changes:

const ref = firebaseApp.database().ref('/some/data');

ref('/some/data').observe('value').subscribe(
  val => console.log(val, `val: ${val}`);
);

ref.set('first');
// Output:
// {$value: 'first'} val: first

ref.set({some: 'thing'});
// Output:
// {some: 'thing'} val: [object Object]

It emits the DataSnapShot value as an object. If the value is a literal, it will emit an object with the value assign to "$value" with "toString" and "toJSON" methods pointing to "$value".

If you would like the observable to emit the snapshot itself:

ref('/some/data').observe('value', {unpack: false});

In any case, the object will also include the "$key", "$ref", "prev" and "$eventType" properties.

Finally, you can use observeChildren to emit an array

const otherRef = firebaseApp.database().ref('/some/other/data');

otherRef.push().setWithPriority('first', 1);
otherRef.push().setWithPriority('second', 2);
otherRef('/some/data').orderByPriority().observeChildren().subscribe(
  list => console.log(list, list.join(','));
);
// Output:
// [{$value: 'first'}] "first"
// [{$value: 'first'}, {$value: 'second'}] "first","second"

It observes the "child_*" changes to emit an ordered array. Note that you cannot update the array to update the underlying data in the Firebase database.

Each item includes "$ref" and "$key" property referencing the item firebase reference and key.

Package Sidebar

Install

npm i rx-firebase

Weekly Downloads

0

Version

0.5.0

License

MIT

Last publish

Collaborators

  • dinoboff