Android(Firestore):无法在Firestore中已创建的文档中添加或更新或设置(SetOptions.merge)字段

时间:2018-07-17 08:43:43

标签: android firebase google-cloud-firestore

我正在尝试将新字段添加到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();
            }
        }
    });

1 个答案:

答案 0 :(得分:1)

您可以添加FailureListener,它会告诉您logcat中出了什么问题。

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();
        }
    }
})
.addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception e) {
        Log.w(TAG, "Error writing document", e);
    }
});