Dan*_* P. 3 firebase firebase-realtime-database
我有一个查询,它在last_visit字段上使用startAt(1周前)和endAt(现在)在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
}
}
Run Code Online (Sandbox Code Playgroud)
如果要排除不具有属性的项目,则需要查询可能的最大范围的值。
一个简单的例子是:
ref.orderByChild('profile_picture').startAt('!').endAt('~')??
Run Code Online (Sandbox Code Playgroud)
这将捕获大多数由ASCII字符组成的键,因为它!
是第一个可打印字符(#33)和~
最后一个可打印字符(#126)。请当心这些,因为当您的键由Unicode字符组成时,它们将不起作用。
归档时间: |
|
查看次数: |
1697 次 |
最近记录: |