【发布时间】:2018-12-24 21:21:15
【问题描述】:
我正在尝试将新字段添加到 Firestore 数据库中“用户”集合下已创建的文档中。 从第一个活动开始,我将名称、描述和性别等基本信息添加到了 firestore 数据库 (collection("users").document(uid)) 中,并且它起作用了。但是,当我尝试将新字段(来自第二个活动)添加到同一个文档时,它不起作用。我尝试使用 set、SetOptions.merge、update,但没有任何效果。即使我尝试添加新集合,它也无法正常工作。有人可以帮我解决这个问题。提前致谢。 我的代码在这两项活动的下方。
第一个活动(BasicInfo.java)(工作)
String uid = user.getUid();
Map<String, Object> dataToSave = new HashMap<>();
dataToSave.put(NAME, nameText);
dataToSave.put(ABOUT, aboutText);
dataToSave.put(GENDER, userGender);
db.collection("users").document(uid).set(dataToSave).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Intent userPreIntent = new Intent(BasicInfo.this, UserPre.class);
startActivity(userPreIntent);
finish();
} else {
Toast.makeText(getApplicationContext(), "There was some problem", Toast.LENGTH_SHORT).show();
}
}
});
第二个活动(UserPre.java)(不工作)
Map<String, Object> data = new HashMap<>();
data.put(STYLE, styleBeauty);
data.put(HUMOR, humor);
data.put(FITNESS, fitness);
data.put(TRAVEL, travel);
data.put(PHOTOGRAPHY, photography);
data.put(MUSIC, music);
data.put(DANCE, dance);
data.put(ART, art);
data.put(FASHION, fashion);
String uid = user.getUid();
db.collection("user").document(uid).set(data).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Toast.makeText(getApplicationContext(), "Data Added", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "There was some problem", Toast.LENGTH_SHORT).show();
}
}
});
【问题讨论】:
-
是
STYLE, HUMOR, FITNESS等等,字符串?您是否也尝试过使用db.collection("user").document(uid).set(data,SetOptions.merge()).addOnCompleteListener()?什么行为? -
@AlexMamo 是的,这些是字符串,是的,我确实使用了 set(data, SetOptions.merge() 但通过更改数据库规则文件解决了问题。存在一些权限问题。现在它通过使用 set(data, SetOptions.merge().
标签: android firebase google-cloud-firestore