首页 > 解决方案 > 使用无效数据调用的函数 Query.where()

问题描述

我想设置两个显示数据的条件。但是这样的错误发生在浏览器控制台中。

Function Query.where() called with invalid data. Unsupported field value: undefined

ts:

如何解决?

  this.itemsCollection = this.afs.collection<Message>('messages', ref => {
    let query: firebase.default.firestore.CollectionReference | firebase.default.firestore.Query = ref;
    query = query.where('receiverId', '==', this.receiverId);
    query = query.where('senderId', '==', this._cs.senderId);
    return query;
  });
  this.items = this.itemsCollection.valueChanges();

标签: javascriptangularfirebasegoogle-cloud-firestore

解决方案


您的代码看起来不错,但由于错误消息文本说明您的变量之一this.receiverIdthis._cs.senderId具有该值undefined并导致错误。undefined只需通过放置某种后备值来确保不存在。

 this.itemsCollection = this.afs.collection<Message>('messages', ref => {
    let query: firebase.default.firestore.CollectionReference | firebase.default.firestore.Query = ref;
    query = query.where('receiverId', '==', this.receiverId || '');
    query = query.where('senderId', '==', this._cs.senderId || '');
    return query;
  });
  this.items = this.itemsCollection.valueChanges();

推荐阅读