React + Firebase - 处理非规范化数据
React + Firebase - Handle denormalized data
我正在从我的数据库中读取文档,其中包含非规范化数据。我使用此数据呈现可点击的 GUI 组件“UserListItem”。
当用户按下此组件时,它将导航到屏幕“配置文件”。
因此,例如,如果在获取非规范化文档后我得到以下信息:
{
userData: { // Denormalized data
id,
avatar,
name,
username,
isCelebrity
},
... other stuff
}
用户在单击时导航到的“个人资料”屏幕需要以下用户字段:
userData = {
/* Included in denormalization */
id,
avatar,
name,
username,
isCelebrity,
/* Not included in denormalization */
totalFollowers,
totalFollowing,
status,
premium,
}
我该如何处理这种情况?我的意思是,典型的策略是什么?
我考虑过在个人资料屏幕中这样做:
useEffect(() => {
if(!isUserDataComplete(userData)) { // Check that the userData object contains all the required fields
const newUserData = getUserData(userData.id); // DB Fetch
users.updateData(newUserData); // Updating the user data in our context
}
}, []);
但不确定这是否是一种好的“干净”方法。
另外,这种情况有名字吗?阅读更多相关信息。
But not sure if this is a good and "clean" approach.
这在很大程度上取决于您的功能要求、访问权限、更新频率以及未“包含在反规范化中”的数据量。
如果:
- 所有
UserList
的授权读者可以阅读对应的Profiles
;
- 在用户打开
UserList
和 he/she 打开其中一个 Profile
之间(如果我理解正确,请单击 UserList
行)未“包含在反规范化中”的数据不会更改;
- 这个没有“包含在反规范化”中的数据并不是很重(我想象
totalFollowers
和totalFollowing
是数字,status
可能是代码而premium
一个布尔值);
那么您可能应该在“反规范化”中包含未包含的数据:您将保存一些读取,因为打开 Profile
时要显示的数据已经被获取。
另一方面,如果上述条件之一不成立,那么当用户打开 Profile
我正在从我的数据库中读取文档,其中包含非规范化数据。我使用此数据呈现可点击的 GUI 组件“UserListItem”。
当用户按下此组件时,它将导航到屏幕“配置文件”。
因此,例如,如果在获取非规范化文档后我得到以下信息:
{
userData: { // Denormalized data
id,
avatar,
name,
username,
isCelebrity
},
... other stuff
}
用户在单击时导航到的“个人资料”屏幕需要以下用户字段:
userData = {
/* Included in denormalization */
id,
avatar,
name,
username,
isCelebrity,
/* Not included in denormalization */
totalFollowers,
totalFollowing,
status,
premium,
}
我该如何处理这种情况?我的意思是,典型的策略是什么?
我考虑过在个人资料屏幕中这样做:
useEffect(() => {
if(!isUserDataComplete(userData)) { // Check that the userData object contains all the required fields
const newUserData = getUserData(userData.id); // DB Fetch
users.updateData(newUserData); // Updating the user data in our context
}
}, []);
但不确定这是否是一种好的“干净”方法。
另外,这种情况有名字吗?阅读更多相关信息。
But not sure if this is a good and "clean" approach.
这在很大程度上取决于您的功能要求、访问权限、更新频率以及未“包含在反规范化中”的数据量。
如果:
- 所有
UserList
的授权读者可以阅读对应的Profiles
; - 在用户打开
UserList
和 he/she 打开其中一个Profile
之间(如果我理解正确,请单击UserList
行)未“包含在反规范化中”的数据不会更改; - 这个没有“包含在反规范化”中的数据并不是很重(我想象
totalFollowers
和totalFollowing
是数字,status
可能是代码而premium
一个布尔值);
那么您可能应该在“反规范化”中包含未包含的数据:您将保存一些读取,因为打开 Profile
时要显示的数据已经被获取。
另一方面,如果上述条件之一不成立,那么当用户打开 Profile