A simple database base on react-native AsyncStorage.
$ npm install react-native-store --save
Upgrading from previous version? Check for breaking-changes.
db_store
|---model_name
|---totalrows (variable)
|---autoinc (variable)
|---rows (array)
|--- _id (number)
|--- ....
- 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
import Store from 'react-native-store';
const DB = {
'foo': Store.model('foo'),
'bar': Store.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
});
}
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.
- Fork this Repo first
- Clone your Repo
- Install dependencies by
$ npm install
- Checkout develop branch
- Feel free to add your features
- Make sure your features are fully tested
- Publish your local branch, Open a pull request
- Enjoy hacking <3