Я новичок, использую angular и firebase, и я застрял на каком-то этапе обучения. Я не родной английский sh.
Я следил за учебником с использованием базы данных реального времени, но теперь я пытаюсь потренироваться с помощью firestore.
У меня есть коллекция под названием «категории» , который содержит такие категории, как «игрушки», «пицца» или что-то еще.
Моя цель - получить эти категории, используя подход, аналогичный подходу, который я видел ранее, поэтому, пожалуйста, не присылайте мне что-то совершенно другое , я пытаюсь научиться, а не для того, чтобы это работало (ну, в некотором роде, но .. вы понимаете ахах).
Так что это мой сервис
getCategories () {
let categories = [];
this.db.collection("categories").get().toPromise().then(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
categories[doc.id] = doc.data();
});
console.log("getCategories() returned : ");
console.log(categories);
return categories;
})
.catch(function(error) {
console.log("Error getting documents: ", error);
});
}
и это мой компонент
export class ProductFormComponent {
categories$;
constructor(categoryService: CategoryService) {
this.categories$ = categoryService.getCategories();
}
}
Я пытаюсь использовать «toPromise ()», чтобы создать обещание, которое получит все категории и отобразит его в наблюдаемом, называемом категориями $.
К сожалению, кажется, что данные поступают в консоль через несколько мгновений после рендеринга страницы (потому что это асинхронный c), но наблюдаемый объект не улавливает изменения, он остается неопределенным навсегда.
I Я использую асинхронный c " tag ", но это ничего не решает.
Я провел много исследований, но не могу понять, что происходит, поэтому надеюсь, что кто-нибудь сможет мне здесь помочь.
Если я найду свой ответ (какой бы глупый он ни был), я все равно опубликую его здесь, так что мой пост не будет бесполезным.
Всем спасибо, надеюсь, вы не слишком раздражены, получив вопрос начинающего.