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