Skip to content

Extends Firebase websocket client with RxJS methods.

License

Notifications You must be signed in to change notification settings

ZahiC/rx-firebase

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

Extends Firebase websocket client with RxJS methods.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%