Neverending Programming Mistakes
    Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    appbase-jspublic

    Build Status Image

    appbase-js

    Appbase.io is a data streams library for Node.JS and Javascript (browser UMD build is in the dist/ directory); compatible with elasticsearch.js.

    An up-to-date documentation for Node.JS API is available at http://docs.appbase.io/javascript/quickstart.html.

    Quick Example

    Working code snippets where each step builds on the previous ones.

    Step 1: Add some data into the app (uses elasticsearch.js)

    // app and authentication configurations 
    const HOST_URL = "https://scalr.api.appbase.io"
    const APPNAME = "createnewtestapp01"
    const CREDENTIALS = "RIvfxo1u1:dee8ee52-8b75-4b5b-be4f-9df3c364f59f"
     
    // Add data into our ES "app index"
    var Appbase = require("appbase-js")
    var appbase = new Appbase({
      url: HOST_URL,
      app: APPNAME,
      credentials: CREDENTIALS
    });
    appbase.index({
      type: "product",
      id: "1",
      body: {
        name: "A green door",
        price: 12.50,
        tags: ["home", "green"],
        stores: ["Walmart", "Target"]
      }
    }).on("data", function(res) {
      console.log(res);
    }).on("error", function(err) {
      console.log(err);
    });

    Step 2: Read the data stream from a particular DB location

    Returns continous updates on a JSON document from a particular type.

    appbase.getStream({
      type: "product",
      id: "1"
    }).on("data", function(res) {
      // "data" handler is triggered every time there is a **new** document update.
      console.log(res);
    }).on("error", function(err) {
      console.log("caught a stream error", err);
    })

    Note: Existing document value is returned via get() method.

    Console Output
    {
      _index: "app`248",
      _type: "product",
      _id: "1",
      _version: 4,
      found: true,
      _source: { 
        name: "A green door",
        price: 12.5,
        tags: [ "home", "green" ],
        stores: [ "Walmart", "Target" ] 
      } 
    }

    getStream() returns a stream.Readable object, which can be conveniently listened via the on("data") event listener. Check out the stream_document_test.js where we make an update to the document and see any further updates to it via the "data" event.

    Step 3: Apply queries on data streams

    Get continuous results by searching across the database streams. A query can be written using the ElasticSearch Query DSL - which supports composing boolean, regex, geo, fuzzy, range queries. Let's stream the results of a simple match_all query on the product type:

    appbase.searchStream({
      type: "product",
      body: {
        query: {
          match_all: {}
        }
      }
    }).on("data", function(res, err) {
      console.log(res);
    }).on("error", function(err) {
      console.log("caught a stream error", err);
    })
    Console Output
    { 
      took: 1,
      timed_out: false,
      _shards: { 
        total: 1, 
        successful: 1, 
        failed: 0
      },
      hits: {
        total: 4,
        max_score: 1,
        hits: [ [Object], [Object], [Object], [Object] ] 
      } 
    }

    searchStream() also returns a stream.Readable object, which can be conveniently listened via the on("data") event listener. Check out the stream_search_test.js where we make an update that matches the query and see the results in the event stream.

    API Reference

    For a complete API reference, check out JS API Ref doc.

    Global

    new Appbase(args)

    Returns a reference object on which streaming requests can be performed.

    args - A set of key/value pairs that configures the ElasticSearch Index
        url: "https://scalr.api.appbase.io"
        app: App name (equivalent to an ElasticSearch Index)
        credentials: A username:password combination used for Basic Auth.

    Optionally (and like in the quick example above), url can contain the credentials field in the format: https://<credentials>@scalr.appbase.io.

    Reference

    reference.getStream(args)

    Get continuous updates on a JSON document with a type and id. Returns a stream.Readable object.

    args - A set of key/value pairs that makes the document URL
        type: ElasticSearch Type, a string
        id: Valid Document ID

    reference.searchStream(args)

    Get continuous updates on search queries (fuzzy, boolean, geolocation, range, full-text). Returns a stream.Readable object.

    args - A set of key/value pairs that makes the document URL
        type: ElasticSearch Type, a string
        body: A JSON Query Body (Any query matching the ElasticSearch Query DSL)

    install

    npm i appbase-js

    Downloadsweekly downloads

    682

    version

    3.0.0

    license

    MIT

    last publish

    collaborators

    • avatar
    • avatar
    • avatar
    • avatar