Dexie.js relationship plugin
Dexie.js is a wrapper library for indexedDB - the standard database in the browser.
Dexie relationship plugin provides an API to ease the loading of relational data from foreign tables
Installation
npm:
npm install dexie-relationships --save
bower:
bower install dexie-relationships --save
API Example
Schema
Note the use of ->
which sets the foreign keys.
var db = 'MusicBands' addons: relationships dbversion1;
Seed the data
db
Usage
dbbands // can be replaced with your custom query // makes referred items included
NOTE: The properties that are set onto the result ('albums' and 'genre' in this case)
will not be visible when callilng JSON.stringify(band), because
they are marked as non-enumerable. The reason for this is to prevent the properties to be
redundantly stored back to the database if calling db.bands.put(band)
.
Result
Band Name: Abba
Genre: Schlager
Albums: [
{
"id": 3,
"name": "Super Trouper",
"bandId": 2,
"year": 1980
},
{
"id": 4,
"name": "Waterloo",
"bandId": 2,
"year": 1974
}
]
Band Name: Beatles
Genre: Rock
Albums: [
{
"id": 1,
"name": "Abbey Road",
"year": 1969,
"bandId": 1
},
{
"id": 2,
"name": "Let It Be",
"year": 1970,
"bandId": 1
}
]