当前位置: 首页 > 面试题库 >

Firebase queryOrderedByChild()方法未提供排序数据

郎子平
2023-03-14
问题内容

我的数据库结构是这样的:

{
  "users": {
    "alovelace": {
      "name": "Ada Lovelace",
      "score": 4,
    },
    "ghopper": { ... },
    "eclarke": { ... }
  }
}

我试图按降序检索前20个得分。

let queryRef = FIRDatabase.database().reference().child("users").queryOrderedByChild("score").queryLimitedToLast(20)
queryRef.observeSingleEventOfType(.Value, withBlock: { (querySnapShot) in
      print(querySnapShot.value)
})

我试图获得输出像

score": 4
score": 3
score": 2

or

score": 2
score": 3
score": 4

or

2
3
4

请让我知道如何解决这个问题。


问题答案:

使用方法observeEventType代替observeSingleEventOfType。另外,将FIRDataEventType设置为ChildAdded

最后,如果要使用前20个项目,请使用queryLimitedToFirst代替queryLimitedToLast

{
  "users" : {
    "alovelace" : {
      "name" : "Ada Lovelace",
      "score" : 4
    },
    "eclarke" : {
      "name" : "Emily Clarke",
      "score" : 5
    },
    "ghopper" : {
      "name" : "Grace Hopper",
      "score" : 2
    }
  }
}

对于上面的数据集

let queryRef = FIRDatabase.database().reference().child("users").queryOrderedByChild("score").queryLimitedToFirst(20)
queryRef.observeEventType(.ChildAdded, withBlock: { (snapshot) in
    print("key: \(snapshot.key), value: \(snapshot.value)")
})

键:引子,值:可选({name = Grace Hopper; score = 2;})

键:alovelace,值:可选({name = Ada Lovelace; score = 4;})

键:eclarke,值:可选({name = Emily Clarke; score = 5;})

快照将以本机类型返回内容。返回的数据类型:

  • NSDictionary
  • NSArray
  • NSNumber(还包括布尔值)
  • NSString

因此,您可以通过这种方式获得分数。

    let queryRef = FIRDatabase.database().reference().child("users").queryOrderedByChild("score").queryLimitedToFirst(20)
queryRef.observeEventType(.ChildAdded, withBlock: { (snapshot) in
    if let scores = snapshot.value as? NSDictionary {
        print(scores["score"])
    }
})

可选的(2)

可选的(4)

可选的(5)

此外,实时数据库的默认值以 升序 返回所有内容。

如果要 降序排列 ,可以在数据库中进行一些
技巧 (4:40)。



 类似资料:
  • 有人知道TestNG如何根据为测试方法指定的数据提供者名称计算出数据提供者方法是什么吗? 我找到了这个解决方案:https://gist.github.com/ae6rt/3805639 但是,它没有考虑到数据提供者可能是: 在完全不同的类别中定义,或 在父类中定义,并且 该方法可以是静态的,也可以是非静态的 我试图自己破解一些东西,但后来我想我不可能是第一个试图解决这个问题的人,特别是因为显然T

  • 问题内容: 我正在做一个很大的项目,有很多注入。当前,我们正在使用一个类,该类为需要一次的每次注入实现,并且它们大多具有一个行方法。 每当我需要一个新的提供程序时,创建一个新的类就变得很烦人。使用提供程序类比使用方法有什么好处,反之亦然? 问题答案: 据我所知,它们在大多数简单情况下是完全等效的。 无论哪种样式,即使键绑定到类或实例,Guice都可以让您注入和。如果直接获取实例,Guice会自动调

  • 问题内容: 我正在尝试“定制” mongolab示例以适合我自己的REST API。现在我遇到了这个错误,我不确定自己在做什么错: 这是我的控制器: 这是模块: 问题答案: 您的代码看起来不错,实际上,当将其复制并粘贴到示例jsFiddle中时,它可以正常工作(除了调用本身): http //jsfiddle.net/VGaWD/ 很难说发生了什么而没有看到更完整的示例,但是我希望上面的jsFid

  • Entity Framework Core 通过一个提供程序模型来允许使用 EF 访问各种不同的数据库。一些概念对于大部分数据库是通用的,这些都包含在主要的 EF Core 组件中,包括 LINQ 的查询表达、事务以及从数据中加载出来后对象的变更跟踪。一些概念则是特定于个别提供程序,比如 SQL Server 提供程序允许你配置内存优化表(一个特定于 SQL Server 的功能),另外一些概念则

  • 我正在使用Pact Go实现来尝试合同测试。我做了一个不起作用的提供者测试,因为我需要模拟我的服务对Twilio的请求。 我已经为我的消费者和这个提供者之间的契约创建了一个Pact对象,然后为我的提供者和twilio之间的契约创建了另一个称为twilioPact的对象。我已经为Twilioendpoint添加了一个POST的交互,但是在pact.log中我没有看到它被注册。我的测试正确地发出了请求

  • 需要未定义变量的帮助:yii2中的dataProvider我已经安装了kartik gridview扩展。我是YII2的新手。正在尝试构建网格。请帮忙。 获取以下错误 PHP通知–yii\base\ErrorException未定义变量:dataProvider 这是我的控制器代码