@canner/canner-api

canner api

Usage no npm install needed!

<script type="module">
  import cannerCannerApi from 'https://cdn.skypack.dev/@canner/canner-api';
</script>

README

canner-api NPM version Dependency Status

The api of canner.

Installation

$ npm install --save canner-api

or

<script src="https://static.canner.io/canner-api/stable/sdk.js"></script>

Usage

import CannerApi from 'canner-api';
const db = new CannerApi(<api key>).connect();
db.array('article')
    .find({title: 'Today is a good day.'})
    .exec((err, docs) {
      // ...
    });
db.object('author')
    .get('name')
    .exec((err, docs) {
      // ...
    });

API

Type

There are two data formats to choose. Each one of them offer the serveral methods to do operation on it.

array

Declares the specific array of the data.

db.array('posts');

object

Declares the specific object of the data.

db.object('info');

exec

Executes the request. If callback is not given, return a Promise;

db.array('posts')
  .find({title:'Today is a good day.'});
  .exec(callback);

db.array('posts')
  .find({title:'Today is a good day.'});
  .exec()
  .then(callback)
  .catch(errHandler);

Operators

find

Only for array. Declares this request a find operator. Executed when give a callback.

db.array('posts')
  .find()

db.array('posts')
  .find({title: 'Today is a good day.'})

db.array('posts')
  .find({title: 'Today is a good day.'}, function(err, docs) {
    // docs = [
    //  {title: 'Today is a good day.'}
    // ]
    // ...
  });

findOne

Only for array. Declares this request a findOne operator. Executed when give a callback. Return the first matched data.

db.array('posts')
  .findOne()

db.array('posts')
  .findOne({title: 'Today is a good day.'})

db.array('posts')
  .findOne({title: 'Today is a good day.'}, function(err, doc) {
    // doc = {
    //  title: 'Today is a good day.'
    // }
    // ...
  });

Delete

Only for array. Declares this request a delete operator. Executed when give a callback.

db.array('posts')
  .delete('<postId>')

db.array('posts')
  .delete('<postId>', function(err) {
    if (err) {
      // do something
    }
  });

Update

Only for array. Declares this request a update operator. Executed when give a callback.

db.array('posts')
  .update('<postId>', {title: 'This is a good day!'})

db.array('posts')
  .update('<postId>', {title: 'This is a good day!'}, function(err) {
    // ...;
  });

Create

Only for array. Declares this request a create operator. Executed when give a callback.

db.array('posts')
  .create({title: 'This is a good day.', content: 'yes'})

db.array('posts')
  .create({title: 'This is a good day.', content: 'yes'}, function(err, docs) {
    // ...;
    // return the docs you given with its _id
  });

Set

Only for object. Declares this request a set operator. Executed when give a callback.

db.object('person')
  .set('name', 'canner-tools!')

db.object('person')
  .set('info/city', 'Taipei', function(err) {
    // ...;
  });

Get

Only for object. Declares this request a get operator. Executed when give a callback.

db.object('person')
  .get('', function(err, doc) {
    // doc = {
    //   name: 'lee'
    // }
  })

db.object('person')
  .get('name', function(err, doc) {
    // doc = 'lee'
    // ...;
  });

Conditions

Only for array.

where

Specifies a path for adding one or one more conditions.

db.array("posts")
  .where({'title', 'title'})
  .find(callback)

db.array('post').find()
  .where({date: {$gt: '2017/05/04'}})

db.array('post').find()
  .where('date').gt('2017/05/04')
  .where('date').lt('2017/05/08')
  .exec(callback)

gt

Specifies $gt condition.

db.array("posts")
  .where('viewer').gt(15)

gte

Specifies $gte condition.

db.array("posts")
  .where('viewer').gte(15)

lt

Specifies $lt condition.

db.array("posts")
  .where('viewer').lt(150)

lte

Specifies $lte condition.

db.array("posts")
  .where('viewer').lte(150)

equals

Specifies $eq condition.

db.array("posts")
  .where('viewer').equals(15)

db.array("posts")
  .where('viewer').eq(15)

contains

Specifies $contains condition.


// posts: [{
//  title: 'this is a title',
//  tags: ['tiger', 'elephant', ...]
// }]
db.array("posts")
  .where('tags').contains('tiger')

in

Specifies $in condition.


// posts: [{
//  title: 'this is a title',
//  tag: 'tiger'
// }]
db.array("posts")
  .where('tag').in(['tiger', 'elephant', 'dog'])

exists

Specifies $exists condition.


// posts: [{
//  title: 'post1',
//  content: 'content',
//  ahthor: 'Lee'
// }, {
//  title: 'post2',
//  content: 'content',
// }]

// find the posts which have the author field
db.array("posts")
  .where('author').exists()

Options

Only for array.

limit

Specifies the limit option.

db.array("posts")
  .find().limit(10)

skip

Specifies the skip option.

db.array("posts")
  .find().skip(10)

sort

Specifies the sort option.

db.array("posts")
  .find().sort(10)

page

Specifies the page option.

use with perPage

db.array("posts").find().page(2)
  .exec(function(err, docs) {
    // docs = {
    //   data: [...],
    //   totalPage: 8
    // }
  });

perPage

Specifies the perPage option.

use with page

db.array("posts").find().perPage(10)
  .exec(function(err, docs) {
    // docs = {
    //   data: [...],
    //   totalPage: 8
    // }
  });

License

Apache-2.0 © abz53378