Repository navigation
Expand file tree
/
Copy pathdatabase.ts
More file actions
39 lines (37 loc) · 1.6 KB
/
Copy pathdatabase.ts
File metadata and controls
39 lines (37 loc) · 1.6 KB
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
import * as firebase from 'firebase';
import { Inject, Injectable } from '@angular/core';
import { FirebaseApp, FirebaseConfig } from '../tokens';
import { FirebaseAppConfig } from '../angularfire2';
import { FirebaseListFactory } from './index';
import { FirebaseListFactoryOpts, FirebaseObjectFactoryOpts } from '../interfaces';
import * as utils from '../utils';
import {
FirebaseListObservable,
FirebaseObjectObservable,
FirebaseObjectFactory
} from './index';
@Injectable()
export class AngularFireDatabase {
constructor(@Inject(FirebaseConfig) private fbConfig:FirebaseAppConfig,
@Inject(FirebaseApp) private fbApp:any) {}
list (urlOrRef:string | firebase.database.Reference, opts?:FirebaseListFactoryOpts):FirebaseListObservable<any[]> {
return utils.checkForUrlOrFirebaseRef(urlOrRef, {
isUrl: () => FirebaseListFactory(this.fbApp.database().refFromURL(getAbsUrl(this.fbConfig, <string>urlOrRef)), opts),
isRef: () => FirebaseListFactory(<firebase.database.Reference>urlOrRef)
});
}
object(urlOrRef: string | firebase.database.Reference, opts?:FirebaseObjectFactoryOpts):FirebaseObjectObservable<any> {
return utils.checkForUrlOrFirebaseRef(urlOrRef, {
isUrl: () => FirebaseObjectFactory(this.fbApp.database().refFromURL(getAbsUrl(this.fbConfig, <string>urlOrRef)), opts),
isRef: () => FirebaseObjectFactory(urlOrRef)
});
}
}
function getAbsUrl (root:FirebaseAppConfig, url:string) {
if (!(/^[a-z]+:\/\/.*/.test(url))) {
// Provided url is relative.
// Strip any leading slash
url = root.databaseURL + '/' + utils.stripLeadingSlash(url);
}
return url;
}