मैं angularcli और angularfire2 का उपयोग कर रहा हूं, मेरे ऐप में firestore में डेटा पुनर्प्राप्त करने के लिए वैकल्पिक पैरामीटर के साथ एक विधि है।

buildWomen(id: string, sex?: string, age?: string): Observable<Humans[]> {
    this.humanCollec = this.db.collection('human/' + id + '/women', ref => ref
      .where('sex', '==', sex) //--this can be null
      .where('age', '==', age); //--this can be null
    return this.humamObersArray = this.humanCollec.valueChanges();
  }

मैं इस उदाहरण को सरल बनाने के लिए केवल 2 पैरामीटर दिखा रहा हूं लेकिन वास्तविक विधि में मेरे पास 10 पैरामीटर हैं। अंतिम पैरामीटर null होने पर इसे जांचने या .कहां खंड को अनदेखा करने का सबसे अच्छा तरीका है

अपडेट करें:

...service.ts

...
humanCol: AngularFirestoreCollection<Human>;
humanObersArray: Observable<Human[]>;
...
buildHuman(id: string, sex?: string, age?: string, ethnicity?: string, height?: string, weight?: string, religion?: string){ //: Observable<Human[]>
      //this.humanCol = 

      this.db.collection('human/'+id+'/women', ref => {
      let retVal = ref as any;
      if (sex != null) { retVal = retVal.where('sex', '==', sex) }
      if (age != null) { retVal = retVal.where('age', '==', age) }
      if (ethnicity != null) { retVal = retVal.where('ethnicity', '==', ethnicity) }
      if (height != null) { retVal = retVal.where('height', '==', height) }
      if (weight != null) { retVal = retVal.where('weight', '==', weight) }
      if (religion != null) { retVal = retVal.where('religion', '==', religion) }

      return retVal;
      //return this.humanObersArray = this.humanCol.valueChanges();
    });
  }
0
Diego Venâncio 19 जून 2018, 17:14

1 उत्तर

सबसे बढ़िया उत्तर

कारखाने के भीतर रेफरी पर निर्माण करें, मापदंडों की उपस्थिति की जाँच करें:

this.humanCollec = this.db.collection(`human/${id}/women`, ref => {
  let retVal = ref as any;
  if (sex != null) { retVal = retVal.where('sex', '==', sex) }
  if (age != null) { retVal = retVal.where('age', '==', age) }
  ...
  return retVal;
});
1
James Daniels 21 जून 2018, 18:51