我对firebase还很陌生,我需要指导如何过滤firebase的离子数据。目前,我正在尝试让用户在用户密钥的位置“应用”#39;是的,数据被调用。到目前为止,网上有答案说使用orderByChild语句(https://firebase.google.com/docs/reference/js/firebase.database.Query),但我不确定是否可以在这种情况下应用。
答案 0 :(得分:2)
您可以使用firebase数据库orderByChild
和equalTo
方法。
来自firebase参考的OrderByChild:
来自firebase参考的orderByChild orderByChild(path)返回firebase.database.Query
它生成一个由指定子键排序的新Query对象。
查询一次只能按一个键排序。在同一个查询上多次调用orderByChild()是一个错误。
equalTo:
equalTo(value,key)返回firebase.database.Query
创建一个包含与指定值匹配的子项的查询。
使用startAt(),endAt()和equalTo()允许我们为查询选择任意的起点和终点。
可选的key参数可用于进一步限制查询的范围。如果已指定,则具有完全指定值的子项还必须具有指定的键作为其键名。这可以用于过滤具有相同值的多个匹配的结果集。
Firebase查询允许您随时通过任何子密钥订购数据。但是,如果您事先知道索引是什么,则可以通过安全规则中的.indexOn规则来定义它们,以获得更好的性能。
您的问题代码:
const requestRef = firebase.database().ref('request');
requestRef.orderByChild('apply')
.equalTo(true)
.once('value')
.then(snapshot => snapshot.val())
.then((data) => {// your handle code here})
完整文档here
答案 1 :(得分:1)
是的,你也可以在你的情况下使用OrderByChild。这应该有用。
var query = firebase.database().ref('request').orderByChild('apply').equalTo('true');
query.once('value', function (snapshot) {
console.log(snapshot.val()) //contains all users that has apply as true
})