android - Firebase 数据库查询 : return latest added object in which the child has a value

标签 android firebase firebase-realtime-database kotlin

我正在构建一个 Android 应用程序,用户可以在其中通过输入体重(可选)和/或上传图片(可选)来跟踪体重和进度。

{
  "users" : {
    "5aHvYy5wTIVAAgdOEso0wr2woHS2" : {
      "firstName" : "Justin",
      "logs" : [ {
        "date" : "16/05/2018",
        "progressPicture" : "http://www.google.com/example.jpg",
        "weight" : 82.1
      }, {
        "date" : "17/05/2018",
        "progressPicture" : "http://www.google.com/example.jpg"
      }, {
        "date" : "18/05/2018",
        "weight" : 80.3
      } ]
    }
}

我已使用以下代码通过按键排序并将结果限制为 1 来获取最新日志。

firebaseDatabase.getReference(USER_REFERENCE).child(firebaseAuth.currentUser?.uid).child(LOG_REFERENCE).orderByKey().limitToLast(1).

从我的JSON可以看出,一个日志不一定要有权重值。

我的问题: 我如何调整我的查询,以便在有权重值的地方检索我的最新日志(因此 1 个日志仅基于键)?

最佳答案

您可以添加名为 weight_log 的新条目,一旦记录了新权重,该条目就会更新,您可以使用将在每次触发时触发的 firebase 函数 轻松完成 /users/{userId}/weight_log/{iterationID} 创建事件

然后你可以在新路径上使用limitToLast(1)

一般来说,扁平化你的数据结构是个好习惯

关于android - Firebase 数据库查询 : return latest added object in which the child has a value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50385694/

相关文章:

ios - firebase 查询返回错误的快照

java - Gradle 同步失败 : All firebase libraries must be either above or below 14. 0.0

ios - 在 Firebase 实时数据库 swift 上 append 一个列表

android - 为什么我收到表名称的列不存在错误

java - 如何向应用程序添加主题?

ios - 类型 'AuthDataResult' 的值没有成员 'providerID' Firebase 5.0

javascript - firebase是否支持数组查询?

javascript - 我无法从 firebase 检索用户名

java - 无法解析 checkSelfPermission() 或 requestPermissions()

android - 包裹写入/读取在 AndroidTestCase 中不起作用 - 为什么?