Использование подписки внутри snapshotChanges () для получения значений с помощью Firestore - PullRequest
0 голосов
/ 28 октября 2018

Я не эксперт по созданию приложения, но мне нужно найти документ коллекции по идентификатору другого документа в другой коллекции.
Мне нужно заполнить объект (Арендатор), у которого есть другой объект(RealEstate) внутри него.

Итак, первое, что я делаю, это использование snapshotChanges и map для получения Контракта.Этот контракт имеет идентификатор как свойство, и с этим идентификатором я хочу сделать новую консультацию к базе данных, чтобы получить RealEstate, ссылающуюся на этот идентификатор, и с этим заполнить данные Contract.RealEstate ...

Пожалуйста, смотрите код выше:

  public contracts: Observable<Contract[]>;
  // I tried to use this property but it does not work... 
  public currentRealEstate: RealEstate = null;
  ... 

  this.contracts = this.afDb.collection<Contract>(
  'Contract',
  ref => ref.where('ownerId', '==', this.fb.user.uid).where("active", "==", true)
  ).snapshotChanges().pipe(
   map(actions => actions.map(a => {
    const data = a.payload.doc.data() as Contract;
    const id = a.payload.doc.id;
    data.id = id;

    // This is where I'm doing wrong... 
    this.afDb.doc<RealEstate>('RealEstate/' + data.realEstateId).valueChanges().
      subscribe((data) => {

        // attr the RealEstate data to the property... 
        this.currentRealEstate = data;  

        console.log(this.currentRealEstate); // return is ok on the log...
      });

    // attr the property to the Contract.realEstate...   
    data.realEstate = this.currentRealEstate; 

    return { id, ...data };
  }))

Что мне нужно сделать?Спасибо, и мне жаль, если я сказал что-то не так.

...