Nesting Penguins Molt

    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.

    Install

    npm i rx-firebase

    DownloadsWeekly Downloads

    18

    Version

    0.5.0

    License

    MIT

    Last publish

    Collaborators

    • dinoboff