在答案之后我得使用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方式”良好实践来构建我的数据库。
答案 0 :(得分:2)
你非常接近:
"submitted-files" : {
"-K_jG4usPu_4yLED7j8L",
"SecondFileUUID"
"ThirdFileUUID"
}
只需为它们赋值true:
"submitted-files" : {
"-K_jG4usPu_4yLED7j8L": true,
"SecondFileUUID": true,
"ThirdFileUUID": true
}
他们在一些教程中解释了这一点。