К сожалению, он не включен в официальные документы AngularFire2 для работы с документами Firestore.Однако, как вы, возможно, знаете, AngularFire2 - это просто оболочка вокруг оригинального пакета Firebase, предназначенная для облегчения работы с Firebase в среде Angular.Изучение документов для оригинального пакета Firebase предоставляет пример того, как достичь этой цели с помощью базового пакета Firebase:
var docRef = db.collection("cities").doc("SF");
docRef.get().then(function(doc) {
if (doc.exists) {
console.log("Document data:", doc.data());
} else {
// doc.data() will be undefined in this case
console.log("No such document!");
}
}).catch(function(error) {
console.log("Error getting document:", error);
});
... что довольно просто.Если бы вы использовали оригинальный пакет Firebase, вы могли бы просто получить ссылку на ваш документ и позвонить .get()
... если бы только AngularFire2 включал эту функцию!Если копнуть немного глубже, то, похоже, это тоже оборачивает этот метод.Глядя на исходный код документов AngularFire2 Firestore , waaayyyyyy внизу, самый последний метод после valueChanges()
- get()
!Так что, похоже, это ПОДДЕРЖИВАЕТСЯ, просто не задокументировано.
/**
* Retrieve the document once.
* @param options
*/
get(options?: firestore.GetOptions) {
return from(this.ref.get(options)).pipe(
runInZone(this.afs.scheduler.zone)
);
}
Я не в состоянии проверить это сам, поэтому не могу обещать, что это сработает.Попробуйте и дайте мне знать.В крайнем случае, если вы не можете заставить AF2 вести себя, вы можете пропустить использование пакета AngularFire2 для этой конкретной функции, а также импортировать исходный пакет Firebase в этот компонент и просто ссылаться на документ, используя метод пакета Firebase.
РЕДАКТИРОВАТЬ:
В случае, если это не было ясно, я предлагаю вам попробовать что-то вроде:
this.storeCollectionRef = this.afs.collection('storeInfo');
this.storeDocumentRef= this.storeCollectionRef.doc<StoreInfo>(window.localStorage.getItem("uid"));
this.storeDocumentRef.get().then( data => {
console.log(data.itemcount);
// ... etc...
// continue doing your picture uploading stuff here
// ...
});