在Firebase中,如何使用单独的ORDERBY进行WHERE查询

In Firebase how does one do a WHERE query with separate ORDER BY

本文关键字:ORDERBY 进行 WHERE 查询 单独 何使用 Firebase      更新时间:2023-09-26

使用firebase并尝试执行SQL中的查询:

`SELECT * FROM definitions WHERE author='joe' ORDER BY votes DESC`

然而,为了在firebase中执行equalTo,您还必须指定您正在订购的字段。两者必须相同。真的没有办法做到这一点吗?

这是可以做到的。

这是一组数据样本

definitions
  -K2XaThTbq3iRnevjM4V
    author: "joe"
    votes: "5"
    sort: "joe_005"
  -K2XaThTbq3iRnevjM4W
    author:  "jay"
    votes: "100"
    sort: "jay_100"
  -K2XaThTbq3iRnevjM4X
    author: "joe"
    votes: "22"
    sort: "joe_022"

ObjC

Firebase *ref = [self.myRootRef childByAppendingPath:@"definitions"];
FQuery *q1 = [ref queryOrderedByChild:@"sort"];
FQuery *q2 = [q1 queryStartingAtValue:@"joe_"];
[q2 observeEventType:FEventTypeChildAdded withBlock:^(FDataSnapshot *snapshot) {
   NSLog(@"%@", snapshot.value);
}];

这将按票数顺序返回所有以乔为作者的孩子。

请记住,排序是对字符串值进行排序,因此joe_5将位于joe_22之后(2小于5)。因此,为了补偿,用0填充投票,使字符串的数字部分具有相同的长度。

如果有1000张选票,这将失败,所以只需用足够的0来弥补。