【问题标题】:Accessing to the users uid in Firebase访问 Firebase 中的用户 uid
【发布时间】:2017-01-17 18:47:43
【问题描述】:

我有这个 JSON 结构:

     {
"Devices" : {
"1EJ8QmEQBJfBez7PMADbftCjVff1" : {
  "Device1" : {
    "Category" : "Others",
    "Description" : "",
    "DeviceName" : "",
    "ImageUrl" : ""
  },
  "Device2" : {
    "Category" : "Chairs",
    "Description" : "",
    "DeviceName" : "",
    "ImageUrl" : ""
  },
  "Device3" : {
    "Category" : "Others",
    "Description" : "",
    "DeviceName" : "",
    "ImageUrl" : ""
  }
},
"97PUAcUC5UYxLpBOLnC4yQjxiEf2" : {
  "Device1" : {
    "Category" : "Others",
    "Description" : "",
    "DeviceName" : "",
    "ImageUrl" : ""
  },
  "Device2" : {
    "Category" : "Books",
    "Description" : "",
    "DeviceName" : "",
    "ImageUrl" : ""
  },
  "Device3" : {
    "Category" : "Chairs",
    "Description" : "",
    "DeviceName" : "",
    "ImageUrl" : ""
    }
   }
  },
 "UserProfile" : {
"1EJ8QmEQBJfBez7PMADbftCjVff1" : {
  "city" : "",
  "email" : "",
  "name" : "",
  "phone" : ""
},
"97PUAcUC5UYxLpBOLnC4yQjxiEf2" : {
  "city" : "",
  "email" : "",
  "name" : "",
  "phone" : ""
   },
 }
}

我想访问每个设备中的类别节点? 那可能吗? 因为我想检索所有具有相同类别的节点的数据!

let ref = FIRDatabase.database().reference().child("Devices")

    ref.queryOrderedByChild("Category")

我已尝试访问设备!然后直接进入类别! 看来这不是正确的方法!

别告诉我我需要改变 JSON 的结构!

有什么方法可以访问用户ID吗?

【问题讨论】:

标签: json swift firebase firebase-realtime-database nosql


【解决方案1】:

在 NoSQL 数据库中,您通常必须针对应用所需的用例对数据进行建模。使用您当前的数据结构,您可以有效地加载用户的设备。

为了还有效地允许加载某个类别的设备,您还必须存储该信息。这是一种方法:

"Categories": {
  "Others": {
    "1EJ8QmEQBJfBez7PMADbftCjVff1_Device1": "1EJ8QmEQBJfBez7PMADbftCjVff1/Device1",
    "1EJ8QmEQBJfBez7PMADbftCjVff1_Device3": "1EJ8QmEQBJfBez7PMADbftCjVff1/Device3",
    "97PUAcUC5UYxLpBOLnC4yQjxiEf2_Device1": "97PUAcUC5UYxLpBOLnC4yQjxiEf2/Device1"
  },
  "Chairs": {
    "1EJ8QmEQBJfBez7PMADbftCjVff1_Device2": "1EJ8QmEQBJfBez7PMADbftCjVff1/Device2",
    "97PUAcUC5UYxLpBOLnC4yQjxiEf2_Device3": "97PUAcUC5UYxLpBOLnC4yQjxiEf2/Device3"
  },
  "Books": {
    "97PUAcUC5UYxLpBOLnC4yQjxiEf2_Device2": "97PUAcUC5UYxLpBOLnC4yQjxiEf2/Device2"
  }

}

所以上面的结构使用<uid>_<devicekey>作为键,然后将/devices下的那个项目的路径作为它的值。

我建议在NoSQL data modeling 上阅读这篇精彩的文章。

【讨论】:

  • 您必须扩充数据结构以允许您想要的查询。你越早接受这一点,你就能越早克服皱眉的脸。
  • 酷。你可以分享这个作为自我回答吗?这可能会使此页面对将来遇到相同问题的开发人员更有用。
猜你喜欢
  • 2020-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-24
  • 1970-01-01
  • 2017-10-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多