rn-async-database

0.1.3 • Public • Published

rn-async-database

A simple local database using AsyncStorage for React Native. Based on react-native-store

Installation

$ npm install rn-async-database --save

or

$ yarn add rn-async-database

Data anatomy

db_store
   |---model_name
         |---totalrows (variable)
         |---autoinc (variable)
         |---rows (array)
                |--- _id (number)
                |--- ....

API

  • Model( modelName ) : returns a Model object
  • Model.add( data, filter ) : returns a promise object
  • Model.update( data, filter ) : returns a promise object
  • Model.updateById( data, id ) : returns a promise object
  • Model.remove( filter ) : returns a promise object
  • Model.removeById( id ) : returns a promise object
  • Model.find( filter ) : returns a promise object
  • Model.findById( id ) : returns a promise object
  • Model.get( filter ) : returns a promise object
  • Model.destroy() : returns a promise object

Simple example

import Store from 'rn-async-database';

const database = new Store({ dbName: 'my_database' })
// --> dbName is REQUIRED

const DB = {
    'foo': database.model('foo'),
    'bar': database.model('bar')
}

// somewhere inside react components

componentDidMount() {
    // Return all items
    DB.foo.find().then(resp => this.setState({items: resp}));
}

handleFilter(itemName) {
    DB.foo.find({
        where: {
            and: [{ foo: { neq: itemName } }, { age: { gte: 5 } }]
        },
        order: {
            age: 'ASC',
        }
    }).then(resp => this.setState({items: resp}));
}

handleOnPress() {
    DB.bar.add({
        foo: 'foo',
        bar: 'bar',
        age: 12
    });
}

Advanced Filtering

Filtering adds more advanced logic to queries. This implementation is heavily based off of LoopBack's implementation. However, there are some important things that are different/leftout:

  • The include filter is not implemented as it is not relevant.
  • The near and like/nlike operators are not implemented.
  • The skip filter in LoopBack is the offset filter in this implementation to stay consistent with previous versions.

Note: Query operations on object nested within an entry are not perfect. For example, trying to update an entry that looks something like this:

{
  location: { name: 'place', distance: 'far' }
}

With this as the value of a where filter:

{
  location: { name: 'place' }
}

Will overwrite the value of location, effectively removing the distance property. This occurs similarly with the order and fields filter, as you can only apply the filters to values that are not nested within an object.

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 0.1.3
    1
    • latest

Version History

  • Version
    Downloads (Last 7 Days)
    • Published
  • 0.1.3
    1
  • 0.1.2
    0
  • 0.1.1
    0

Package Sidebar

Install

npm i rn-async-database

Weekly Downloads

1

Version

0.1.3

License

MIT

Unpacked Size

69.1 kB

Total Files

15

Last publish

Collaborators

  • jxnata