考虑一个集合users
。集合中的每个文档都有name
and email
作为字段。
{
"users": {
"uid1": {
"name": "Alex Saveau",
"email": "[email protected] /cdn-cgi/l/email-protection"
},
"uid2": { ... },
"uid3": { ... }
}
}
现在考虑一下,通过这个有效的 Cloud Firestore 数据库结构,我启动了移动应用程序的第一个版本。然后,在某个时候我意识到我想包含另一个字段,例如last_login
.
在代码中,使用 Java 从 Firestore DB 读取所有用户文档的方式如下:
FirebaseFirestore.getInstance().collection("users").get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (DocumentSnapshot document : task.getResult()) {
mUsers.add(document.toObject(User.class));
}
}
}
});
班级在哪里User
现在包含name
, email
and last_login
.
自新User
field (last_login
)不包含在数据库中存储的旧用户中,应用程序崩溃,因为新用户User
班级正在等待last_login
返回的字段为null
by the get()
method.
包含哪些最佳实践last_login
在所有现有的User
数据库文档不会在新版本的应用程序上丢失数据?我应该只运行一次代码片段来完成此任务,还是有更好的方法来解决该问题?