我问自己这种数据库结构是否合适,因为用PK AND 识别用户再次将UID置于该PK下。我不知道这是真的有意甚至更多,可能是危险的吗?
{
"Users" : {
"7idb6ThWR8aqmnEHFao5GRCV1kI3" : {
"dPicture" : "https://firebasestorage.googleapis.com/v0/b/parkir-ngasal.appspot.com/o/Profile_images%2Fcropped1465266876.jpg?alt=media&token=44f83fdf-935a-4b3c-8138-561dcba2fca7",
"status" : "hi my name is erik",
"uid" : "7idb6ThWR8aqmnEHFao5GRCV1kI3",
"username" : "erik"
}
},
"posts" : {
"-KfsrGsY8TWb2wiMFtAq" : {
"dPicture" : "https://firebasestorage.googleapis.com/v0/b/parkir-ngasal.appspot.com/o/Profile_images%2Fcropped1465266876.jpg?alt=media&token=44f83fdf-935a-4b3c-8138-561dcba2fca7",
"image" : "https://firebasestorage.googleapis.com/v0/b/parkir-ngasal.appspot.com/o/Post_Images%2Fcropped1354055061.jpg?alt=media&token=77fbc9ed-4356-43c1-b7bb-9563300a8b7b",
"small_title" : "tes",
"summary" : "tes",
"title" : "tes",
"uid" : "7idb6ThWR8aqmnEHFao5GRCV1kI3",
"username" : "erik"
}
}
}

答案 0 :(得分:1)
这并不危险。您在父级别设置的安全性向下遍历。来自Firebase文档:
.read和.write规则从上到下工作,规则较浅 压倒更深层次的规则。如果规则授予读取或写入权限 一个特定的路径,然后它还授予对所有子节点的访问权限 它
至于它是否有意义......这取决于你的决定。虽然在数据结构中复制密钥没有任何问题,但并不需要。从密钥检索数据与从有效负载中检索数据一样容易。
const data = await firebase.database().ref(`/Users/`).once('value');
const users = _.map(data.val(), (val, key) => {
return {
userId: key,
val.username,
val.dPicture,
val.status
};
});