blow-data-service
Version:
Observable data service for Blow.
57 lines (49 loc) • 1.66 kB
text/typescript
/// <reference path="../typings/tsd.d.ts" />
;
import {Observable} from 'rxjs';
import {Query} from 'blow-query';
import {DataService, Entity, DataServiceSettings} from '../src/blow-data-service';
interface Country extends Entity {
_id: string;
name: string;
code: string;
}
const settings: DataServiceSettings = {
// default: {
// default: true,
// connector: 'mongodb',
// settings: {
// url: 'mongodb://localhost:27017/test'
// }
// }
default: {
default: true,
connector: 'memory'
}
}
const dataService = DataService.create(settings);
dataService.connect()
.subscribe(() => {
console.log('Connected');
const countriesCollection = dataService.collection<Country>('countries');
const data = [{name: 'Poland', code: 'POL'}, {name: 'Ireland', code: 'IRL'}];
Observable.from(data)
.mergeMap(countryData => countriesCollection.save(countryData))
.last()
.do(() => console.log('Countries saved.'))
.mergeMap(() => countriesCollection.count())
.do(c => console.log(`Total number of countries: ${c}`))
.mergeMap(() => {
const query = new Query();
query.equal('code', 'POL')
return countriesCollection.find(query);
})
.do(c => console.log(c))
.mergeMap((c: Country) => countriesCollection.deleteById(c._id))
.do(deleted => console.log(`Deleted countries: ${deleted}.`))
.mergeMap(() => countriesCollection.find())
.do(c => console.log(c))
.mergeMap(() => countriesCollection.delete())
.mergeMap(() => dataService.disconnect())
.subscribe(() => console.log('DONE'));
});