我正在构建一个订购工具。每个订单都有id
,这是我使用push
方法从Firebase获得的唯一标识符。我的问题是:让我们说一个标有" Order"的文本字段。在我的页面旁边有一个标题为"查找"。
检索(甚至可能构建)数据的最佳方法是什么?我熟悉Firebase数据库的索引。基本上,我想启用搜索特定订单。可能有成千上万。以下是正确的吗?
var wantedOrder = firebase.database().ref('orders').equalTo("My Input Text");
"orders": {
"abc123456": {
"name": "My First Fake Order",
"members": {
"alovelace": true,
"ghopper": true,
"eclarke": true
},
"abc123457": {
"name": "My Second Fake Order",
"members": {
"alovelace": true,
"ghopper": true,
"eclarke": true
}
},
...
}
Firebase规则
{
"rules": {
"orders": {
".indexOn": ["name"]
}
}
}
答案 0 :(得分:2)
您需要在equalTo()
,startAt()
和endAt()
之前使用orderBy *()类型的函数。
在您的特定情况下,我会使用
var wantedOrder = firebase.database().ref('orders').orderByChild('name').equalTo('yourText').on(listener you want.....)
这将返回您搜索的完全匹配....
如果您想采用更灵活的方式,请使用startAt()
和endAt()
。
答案 1 :(得分:0)
我可以建议你实现你想要的两种方式。
(如果您有大量数据,效率不高)您可以通过“订单”节点的ValueEventListener获取整个数据,然后循环搜索关键字的每组数据。
看看这个链接,他们有与您相似的数据集。 Querying firebase through substring