react-native-firebase/lib/modules/firestore/DocumentSnapshot.js

49 lines
1.1 KiB
JavaScript
Raw Normal View History

/**
* @flow
* DocumentSnapshot representation wrapper
*/
import DocumentReference from './DocumentReference';
import Path from './Path';
2017-11-17 14:22:46 +00:00
import { parseNativeMap } from './utils/serialize';
import type Firestore from './';
/**
* @class DocumentSnapshot
*/
export default class DocumentSnapshot {
_data: Object | void;
2017-11-17 14:22:46 +00:00
_metadata: FirestoreSnapshotMetadata;
_ref: DocumentReference;
2017-11-17 14:22:46 +00:00
constructor(firestore: Firestore, nativeData: FirestoreNativeDocumentSnapshot) {
this._data = parseNativeMap(firestore, nativeData.data);
this._metadata = nativeData.metadata;
this._ref = new DocumentReference(firestore, Path.fromName(nativeData.path));
}
get exists(): boolean {
return this._data !== undefined;
}
get id(): string | null {
return this._ref.id;
}
2017-11-17 14:22:46 +00:00
get metadata(): FirestoreSnapshotMetadata {
return this._metadata;
}
get ref(): DocumentReference {
return this._ref;
}
data(): Object | void {
return this._data;
}
get(fieldPath: string): any {
return this._data ? this._data[fieldPath] : undefined;
}
}