import { Observable } from 'rxjs'; import { Action, DocumentData, DocumentReference, DocumentSnapshot, QueryFn, SetOptions } from '../interfaces'; import { AngularFirestore } from '../firestore'; import { AngularFirestoreCollection } from '../collection/collection'; import firebase from 'firebase/compat/app'; /** * AngularFirestoreDocument service * * This class creates a reference to a Firestore Document. A reference is provided in * in the constructor. The class is generic which gives you type safety for data update * methods and data streaming. * * This class uses Symbol.observable to transform into Observable using Observable.from(). * * This class is rarely used directly and should be created from the AngularFirestore service. * * Example: * * const fakeStock = new AngularFirestoreDocument(doc('stocks/FAKE')); * await fakeStock.set({ name: 'FAKE', price: 0.01 }); * fakeStock.valueChanges().map(snap => { * if(snap.exists) return snap.data(); * return null; * }).subscribe(value => console.log(value)); * // OR! Transform using Observable.from() and the data is unwrapped for you * Observable.from(fakeStock).subscribe(value => console.log(value)); */ export declare class AngularFirestoreDocument { ref: DocumentReference; private afs; /** * The constructor takes in a DocumentReference to provide wrapper methods * for data operations, data streaming, and Symbol.observable. */ constructor(ref: DocumentReference, afs: AngularFirestore); /** * Create or overwrite a single document. */ set(data: T, options?: SetOptions): Promise; /** * Update some fields of a document without overwriting the entire document. */ update(data: Partial): Promise; /** * Delete a document. */ delete(): Promise; /** * Create a reference to a sub-collection given a path and an optional query * function. */ collection(path: string, queryFn?: QueryFn): AngularFirestoreCollection; /** * Listen to snapshot updates from the document. */ snapshotChanges(): Observable>>; /** * Listen to unwrapped snapshot updates from the document. * * If the `idField` option is provided, document IDs are included and mapped to the * provided `idField` property name. */ valueChanges(options?: {}): Observable; valueChanges(options: { idField: K; }): Observable<(T & { [T in K]: string; }) | undefined>; /** * Retrieve the document once. */ get(options?: firebase.firestore.GetOptions): Observable>; }