-
Notifications
You must be signed in to change notification settings - Fork 2.2k
/
Copy pathdatabase.ts
42 lines (35 loc) · 1.61 KB
/
database.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import { Inject, Injectable, Optional, NgZone } from '@angular/core';
import { FirebaseListFactory } from './firebase_list_factory';
import { FirebaseListObservable } from './firebase_list_observable';
import { FirebaseListFactoryOpts, FirebaseObjectFactoryOpts, PathReference } from './interfaces';
import { FirebaseObjectFactory } from './firebase_object_factory';
import { FirebaseObjectObservable } from './firebase_object_observable';
import * as utils from './utils';
import { FirebaseDatabase, FirebaseOptions, FirebaseAppConfig, FirebaseOptionsToken, FirebaseNameOrConfigToken, RealtimeDatabaseURL, _firebaseAppFactory } from 'angularfire2';
@Injectable()
export class AngularFireDatabase {
/**
* Firebase Database instance
*/
database: FirebaseDatabase;
constructor(
@Inject(FirebaseOptionsToken) options:FirebaseOptions,
@Inject(FirebaseNameOrConfigToken) nameOrConfig:string|FirebaseAppConfig|undefined,
@Optional() @Inject(RealtimeDatabaseURL) databaseURL:string,
zone: NgZone
) {
this.database = zone.runOutsideAngular(() => {
const app = _firebaseAppFactory(options, nameOrConfig);
return app.database(databaseURL || undefined);
});
}
list(pathOrRef: PathReference, opts?:FirebaseListFactoryOpts):FirebaseListObservable<any[]> {
const ref = utils.getRef(this.database, pathOrRef);
return FirebaseListFactory(ref, opts);
}
object(pathOrRef: PathReference, opts?:FirebaseObjectFactoryOpts):FirebaseObjectObservable<any> {
const ref = utils.getRef(this.database, pathOrRef);
return FirebaseObjectFactory(ref, opts);
}
}
export { RealtimeDatabaseURL };