【问题标题】:How to get values from firebase with where condition如何在 where 条件下从 firebase 获取值
【发布时间】:2019-08-30 06:08:37
【问题描述】:

我是 Firebase 的新手。为什么我无法得到我要查询的内容。 在我的其他查询中,我实际上可以看到有效负载,但用这个我看不到。这是我在 firebase 中的数据库架构:

我需要获取具有我需要的日期的数据。这就是我创建查询的方式:

    getSalesForToday() {
    const data = this.fireStore.collection(
      'Sales', ref => ref.where('TransactionDate', '==', formatDate(new Date, 'yyyy/MM/dd', 'en'))
      );
    console.log(data);
  }

但除此之外它没有给我任何结果:

AngularFirestoreCollection {ref: CollectionReference, query: Query, afs: AngularFirestore}
afs: AngularFirestore {scheduler: FirebaseZoneScheduler, firestore: Firestore, persistenceEnabled$: Observable}
query: Query {_query: Query, firestore: Firestore}
ref: CollectionReference {_query: Query, firestore: Firestore}
__proto__: Object

我需要你的帮助。谢谢。

【问题讨论】:

    标签: javascript angular firebase google-cloud-firestore angularfire2


    【解决方案1】:
    
        const data = this.fireStore.collection(
          'Sales', ref => ref.where('TransactionDate', '==', formatDate(new Date, 'yyyy/MM/dd', 'en'))
          );
    
    

    fireStore.collection 只返回一个 observable。你仍然需要订阅这个 observable 才能使用数据。

    
    const data$ = this.fireStore.collection('Sales',
                       ref => ref.where('TransactionDate', '==', formatDate(new 
                                         Date,'yyyy/MM/dd', 'en')));
    
    // Subscribing to collection observable to log out the data
    data$.subscribe(data => console.log(data))
    
    
    

    请记住,只要不使用此订阅,您就需要取消订阅。 另请查看async pipe 以获取有关在角度https://angular.io/api/common/AsyncPipe 中使用可观察对象的最佳实践的更多信息

    【讨论】:

      【解决方案2】:

      您需要创建并执行查询:

      getSalesForToday() {
      
          let query = ref.where('TransactionDate', '==', 
          formatDate(new Date, 'yyyy/MM/dd', 'en'))
          .get()
          .then(snapshot => {
              if (snapshot.empty) {
                console.log('No matching documents.');
                return;
              }  
      
              snapshot.forEach(doc => {
                // Do something
                console.log(doc);
              });
            })
            .catch(err => {
              console.log('Error getting documents', err);
            });
          }
      

      ref 必须是对预期包含 价值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-05-25
        • 2018-01-31
        • 2011-12-08
        • 2020-08-26
        • 2022-10-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多