Ранее, используя базу данных в реальном времени, я привык использовать подписку для отслеживания изменений в базе данных.Облачный Firestore, однако, имеет .valueChanges (), который, кажется, делает это автоматически, поэтому мне все еще нужно использовать подписку rxjs?
Мой код ниже полностью работает без проблем, я спрашиваю о _subscription: Subscription;
и не.valueChanges().subscribe
import { AngularFirestore, AngularFirestoreCollection, AngularFirestoreDocument } from '@angular/fire/firestore';
import * as firebase from 'firebase/app';
import 'firebase/database';
import 'rxjs/Rx';
import { Observable, pipe, of, Subscription } from 'rxjs';
import { switchMap } from 'rxjs/operators';
@Injectable({
providedIn: 'root'
})
export class FirebaseService {
_data: any = [];
_subscription: Subscription;
itemsDocument_data: AngularFirestoreDocument<any[]>;
itemsCollection_data: AngularFirestoreCollection<any[]>;
constructor(private _afDB: AngularFirestore) {
await _dbGeData();
}
private async _dbGeData() {
try {
if (this._fbData_subscription_User === undefined) {
this.itemsDocument_users = this._afDB.collection("_myDataPath").doc("_mySecondDatapath");
this._subscription_data = await this.itemsDocument_data.valueChanges().subscribe((items) => {
this._data = [];
for (let i in items) {
this._data.push = items[i];
}
//items (object) is now this._data (Array)
console.log("items (object)", items);
console.log("this._data (Array)", this._data);
return;
});
}
} catch (e) {
console.error("when getting data", e);
return;
}
return;
}
ngOnDestroy() {
if (this._subscription !== undefined) {
this._subscription.unsubscribe();
}
}
}