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

Firebase查询:排除特定字段为空的数据,firebase,firebase-realtime-database,Firebase,Firebase Realtime Database,我有一个查询,它使用最后一次访问字段的startAt(1周前)和endAt(现在)获取两个日期之间的数据 然后我循环搜索结果,丢弃没有个人资料图片的用户 问题是大约20%的用户都有个人资料图片,所以为了让100个用户都有个人资料图片,我必须查询至少500人(我使用limitToLast(500)) 我可以通过某种方式指定类似于SQL:WHERE profile\u picture不为NULL的内容来提高查询的效率吗 如果可能的话,我也可以只使用limitToLast(100),如果可以只拍摄那些

我有一个查询,它使用最后一次访问字段的startAt(1周前)和endAt(现在)获取两个日期之间的数据

然后我循环搜索结果,丢弃没有个人资料图片的用户

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

我可以通过某种方式指定类似于SQL:WHERE profile\u picture不为NULL的内容来提高查询的效率吗

如果可能的话,我也可以只使用limitToLast(100),如果可以只拍摄那些有个人资料图片集的用户

数据库看起来像:

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

如果试图排除没有属性的项,则需要查询尽可能广泛的值

一个简单的例子是:

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

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

ref.orderByChild('profile_picture').startAt('a').endAt('z~')
?是的,现在使用它:-)谢谢我收到以下错误:
firebase.ref('users').orderByChild('instagram').startAt('!'))‌​.endAt(“~”).once('value')语法错误:在模块的Object.runInThisContext(vm.js:152:10)处的createScript(vm.js:80:10)处的令牌无效或意外。在Object.Module处的编译(Module.js:624:28)。在tryModuleLoad(Module.js:513:12)处的扩展..(Module.js:671:10)处的加载(Module.js:573:32)在Function.Module._load(Module.js:505:3)在Function.Module.runMain(Module.js:701:10)在bootstrap_node.js:618:3启动时(bootstrap_node.js:194:16)在bootstrap_node.js:618:3
不可能说出为什么在没有看到错误的情况下得到它。我强烈建议就此提出一个新问题。database.push函数是否总是创建ASCII键@Frank van Puffelen生成的键
push()
确实总是ASCII码。但如果您还想搜索非ASCII字符,请确保使用比
~
更合适的字符。最常见的值是
\uf8ff
,它是已知的最高unicode码点。例如,见