Чтение и отображение данных об одном продукте с использованием Product ID-Anguler 8 и Firebase - PullRequest
0 голосов
/ 25 февраля 2020

Заранее спасибо, ребята.

Я пытаюсь получить запись о единственном продукте из пожарного магазина по angular 8, но не понимаю, как получить запись. Я новичок в этом, пожалуйста, помогите мне, я провожу 2 дня в этом. Ниже моя база данных Fire store. Поскольку я отображал все товары на одной странице и на этой странице, когда я нажимал на конкретную продукцию, должны отображаться детали другой страницы для этого соответствующего товара

database

Это мой файл TS.

private ProductID;
private ProductData:ProductDModel[];

constructor(private route: ActivatedRoute,private empservice : GoodsService,private GoodService : GoodsService,public afs:AngularFirestore) { }

  ngOnInit() {

this.ProductID = this.route.snapshot.paramMap.get("ProductID");
this.GoodService.getSingleGoodData(this.ProductID).catch(data => {
  this.ProductData = data.map(e => { 
    alert(this.ProductData);       
      return {

       ProductID: e.payload.doc.data()['ProductID'],
       ProductDescription: e.payload.doc.data()['ProductDescription'],
       ProductURL:e.payload.doc.data()['ProductURL'] , 
       ProductName   :e.payload.doc.data()['ProductName']   ,
       ProductPrize:e.payload.doc.data()["ProductPrize"]
      } as unknown as ProductDModel;
    })
    console.log(this.ProductData);

    return this.ProductData;

  });"

**This is my service :**


  "public getSingleGoodData(ProductID) {

console.log(this.afs.collection('FarmerInfo').doc('Product').collection('ProductCollectionInfo',ref => ref.where('ProductID', '==', ProductID)));
    return this.afs.collection('FarmerInfo').doc('Product').collection('ProductCollectionInfo',ref => ref.where('ProductID', '==', ProductID))

}"

1 Ответ

1 голос
/ 26 февраля 2020

Попробуйте сначала зарегистрировать firestore listener, поэтому в компоненте напишите:

let productId = this.route.snapshot.paramMap.get("ProductID");

this.yourProductService
  .registerListener(productId)
  .subscribe(product => {
    console.log(product);
  });

в сервисе у вас должно быть:

registerListener(productId: string) {
   this.jobDoc = this.afs.doc<Product>(`ProductCollectionInfo/${productId}`);
   this.product = this.jobDoc.valueChanges();

   return this.product;
}

, тогда вы можете использовать this.product всякий раз, когда Например, вы можете получить последнюю стоимость продукта, используя следующие строки в сервисе:

getLatest(): Observable<Product> {
   return this.job.pipe(take(1));
}

Удачи:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...