Firebase 数据库从子节点 B 中指定的子节点 A 检索对象

Firebase Database retrieving objects from child node A specified in child node B

我想在我的 Firebase 数据库中实现一个浅层数据结构。就此而言,我有两个子节点。第一个子节点 (users) 具有用户 ID,其中包含来自第二个子节点 (items) 的 itemID 列表。

如何使用用户列表中指定的项目列表中的项目填充 UITableView/RecyclerView?每个登录用户都有自己的项目,我想从 items 列表中检索它们。可以用 FirebaseUI 完成吗?

解决方案适用于任何受支持的平台,我只是想了解一下。

{
  "users" : {
    "97csAjE3dIZxZ5t3LbgxbaSOgxl2" : { // userID
      "TQjEnGjiRNsYL9" : { // each key is an itemID
        "etc" : "..."
      },
      "VPHYi6xhrYsAwK" : {
        "etc" : "..."
      },
      "WbnrFVDdfB9iJj" : {
        "etc" : "..."
      },
      "xB9UgakhHkNzid" : {
        "etc" : "..."
      }
    }
  },
  "items" : [ {
    "_id" : "vCG3furXeUnZpK", // Eventually I'll make this _id into the item key
    "etc" : "..."
  }, {
    "_id" : "WbnrFVDdfB9iJj"
  }, {
    "_id" : "xB9UgakhHkNzid"
  }, {
    "_id" : "VPHYi6xhrYsAwK"
  }, {
    "_id" : "TQjEnGjiRNsYL9"
  }, {
    "_id" : "Bor6VhCyqxZHpb"
  }, {
    "_id" : "iQnMmNy2fbrvYn"
  } ]
}

您可以使用带子节点的 firebase 条件获取特定用户的数据。

database.child(Table).
         orderByChild("user/id")
        .equalTo("somevalue").

首先获取当前用户的所有 itemID 并将 id 存储在某处。

let itemIDArray = [String]()

现在使用以下代码为每个项目 ID 获取项目详细信息

// database reference
ref.child("items").child(itemID).observeSingleEvent(of: .value, with: {(snapshot) in

}