【问题标题】:Firebase/JSON database structure to reference a data UUID in other part of databaseFirebase/JSON 数据库结构以引用数据库其他部分中的数据 UUID
【发布时间】:2017-08-05 18:54:42
【问题描述】:

更新

得到答案后我必须使用 fileUID: true,这里是如何使用 AngularFire2 和 typescript 实现动态键。它可能对某些人有用:

this.af.database.object(`users/${userID}/submitted-files/`).update({
  [nextFileKey]: true
});

我需要在文件中创建对 userUUID 的反向引用吗?

原问题

这是我当前的数据库结构。这个问题适用于我在 Firebase 的案例,但任何 JSON 数据库看起来都一样。

{
  "users" : {
    "0gIo3Ak2EFbLDSSCMSEpciuWnB83" : {
      "email" : "username@example.com",
      "hasAcceptedTerms" : true,
      "state" : {
        "isProfileComplete" : true
      },
      "submitted-files": { // FILES REFERENCES WILL GO THERE }
    }
  }
}

我希望我的用户能够上传一些文件,这些文件将由外部观察者脚本进行审核然后批准。在文件上传时,我想在我的 Firebase 数据库中创建一个新的files 区域,以获得这个结构:

{
  "files" : {
    "-K_jG4usPu_4yLED7j8L" : {
      "fileUUID" : "448f4sd8f4sd4fsdf494ds84f98sd4f",
      "filename" : "document.pdf"
      "user" : "0gIo3Ak2EFbLDSSCMSEpciuWnB83"
    }
  },
  "users" : {
    "0gIo3Ak2EFbLDSSCMSEpciuWnB83" : {
      "email" : "username@example.com",
      "hasAcceptedTerms" : true,
      "state" : {
        "isProfileComplete" : true
      },
      "submitted-files": { // FILES REFERENCES WILL GO THERE }
    }
  }
}

问题是现在链接user/submitted-files路径中的文件UUID。

在完美的世界中,我会将其添加到用户数据中:

"submitted-files" : {
    "-K_jG4usPu_4yLED7j8L",
    "SecondFileUUID"
    "ThirdFileUUID"
  }

但是由于我必须输入一个键/值对,因为它是 JSON 数据库,我怎样才能有效地在我的用户部分列出所有提交的文件 UUID 而没有任何其他非必需信息?

是否必须复制整个用户路径中的文件信息才能获取:

"users" : {
    "0gIo3DQ9EFbLDSSCMSEpciuWnB83" : {
      ...
      "submitted-files" : {
        "-K_jG4usPu_4yLED7j8L" : {
           "fileUUID" : "448f4sd8f4sd4fsdf494ds84f98sd4f",
           "filename" : "document.pdf"
           "user" : "0gIo3Ak2EFbLDSSCMSEpciuWnB83"
        }
      }
    }
  }

或有没有办法只在user/submitted-files路径中输入对文件UUID的引用?

我想要关于以正确的“JSON 方式”良好实践构建我的数据库的建议。

【问题讨论】:

    标签: json firebase firebase-realtime-database nosql


    【解决方案1】:

    你很接近:

    "submitted-files" : {
        "-K_jG4usPu_4yLED7j8L",
        "SecondFileUUID"
        "ThirdFileUUID"
    }
    

    只需为它们分配一个 true 值即可:

    "submitted-files" : {
        "-K_jG4usPu_4yLED7j8L": true,
        "SecondFileUUID": true,
        "ThirdFileUUID": true
    }
    

    他们在一些教程中对此进行了解释。

    【讨论】:

    • 好吧,看起来很酷。在良好的实践中,我现在是否必须在文件部分创建对用户 ID 的反向引用?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    • 2019-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多