【问题标题】:Structuring data in Firebase mixing fields as ID将 Firebase 混合字段中的数据结构化为 ID
【发布时间】:2017-09-02 16:33:33
【问题描述】:

我是使用 Firebase 和 NoSQL 数据库的新手。我想知道是否可以这样做: 拥有一个用户数据库,我想通过电子邮件或 UID 获取数据。将这两个字段混合为 ID 并使用 queryStartingAtValuequeryEndingAtValuemethods 进行过滤是否最佳?

{
 "users": {
    "user1@gmail.comDjDJSADfgg": {
      dataUser1: ----- },

     "user2@gmail.comfmadaDkK": {
      dataUser2: ----- },

     "user3@gmail.com3Dkdjakdja4": {
      dataUser3: ----- },

     "user4@gmail.comKdsadASD": {
      dataUser4: ------ },
   }
}

【问题讨论】:

  • 您可以这样做,但如果您只使用 UID 并且如果您想通过电子邮件查找用户,您可以随时按子项进行查询。此外,有些人建议不要在路径中使用用户个人信息,以避免有人尝试探测对象和路径的存在(取决于您的安全规则的配置),可能的缺点是您需要知道 uid直接访问用户

标签: firebase firebase-realtime-database database nosql


【解决方案1】:

虽然你可以使用queryStartingAtValuequeryEndingAtValue,但是这个解决方案不是很清楚,想象一下别人读了你的代码(甚至是6个月后的你),他/她会知道你说的queryStartingAtValue是什么意思吗? ?应该不会吧。

我认为使用orderByChildequalTo 更清晰

例如

var ref = new Firebase("yourdb");

ref.orderByChild("email").equalTo("blahblah@gmail.com")
  .on( anEvent, function(snapshot) {   
       console.log(snapshot.key()); 
   });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-08
    • 2020-02-28
    • 2014-06-06
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多