Firebase查询:排除特定字段为空的数据

时间:2016-08-22 18:18:39

标签: firebase firebase-realtime-database

我有一个查询,在last_visit字段上使用startAt(1周前)和endAt(now)在2个日期之间获取数据。

然后我遍历结果以丢弃没有个人资料照片的用户。

问题是大约20%的用户拥有个人资料图片,所以为了让100个用户拥有个人资料图片,我必须查询至少500人(我使用limitToLast(500))。

我是否可以通过某种方式指定SQL中的内容来提高查询效率:WHERE profile_picture IS NOT NULL?

如果可能的话,我也可以只使用limitToLast(100),如果可以只对那些设置了个人资料图片的用户进行。

数据库看起来像:

users: {
  {user_uid}: {
     profile_picture: null,
     last_visit: 123456789
  }
  {user_uid}: {
     profile_picture: 'example.com/pic.png',
     last_visit: 123456789
  }
}

1 个答案:

答案 0 :(得分:4)

如果您尝试排除没有财产的项目,则需要查询最广泛的值。

一个简单的例子是:

ref.orderByChild('profile_picture').startAt('!').endAt('~')‌​

这将捕获大多数由ASCII字符组成的键,因为!是第一个可打印字符(#33),~是最后一个可打印字符(#126)。小心这些,因为当你的密钥由unicode字符组成时,它们不会工作。