【发布时间】:2022-01-07 11:20:32
【问题描述】:
我想使用 HashMap 在现有的 firestore 文档中添加一些字段。 首先我创建了firestore db{collection("UsersProfile").document(currentUserID)} 并使用了set() 方法,然后为了添加字段(key, value),我使用了update() 方法。但未添加 Field 值。
我希望你的帮助。谢谢。
private void SaveAccountSetupInformation()
{
username = Username.getText().toString();
nickname = Nickname.getText().toString();
userDescription = UserDescription.getText().toString();
if (TextUtils.isEmpty(username))
{
Toast.makeText(this, "이름이나 닉네임 자기소개를 하세요", Toast.LENGTH_SHORT).show();
// Intent selfIntent = new Intent(SetupActivity.this, SetupActivity.class);
// startActivity(selfIntent)
}
else if(TextUtils.isEmpty(nickname))
{
}
else if(TextUtils.isEmpty(userDescription))
{
}
else
{
Calendar calForDate = Calendar.getInstance();
SimpleDateFormat currentDate = new SimpleDateFormat("dd-MMMM-yyyy");
saveCurrentDate = currentDate.format(calForDate.getTime());
HashMap<String, Object> profileMap = new HashMap<String, Object>();
profileMap.put("username", username);
profileMap.put("nickname", nickname);
profileMap.put("userDescription", userDescription);
profileMap.put("currentUserID", currentUserID);
profileMap.put("date", saveCurrentDate);
db.collection("UsersProfile").document(currentUserID)
.set(profileMap)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void unused) {
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
});
}
}
ente cropActivityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),
new ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult result) {
if (result.getResultCode() == Activity.RESULT_OK) {
//image picked, get uri of image
Intent data = result.getData();
assert data != null;
imageUri = data.getData();
//profileIv.setImageUri(imageUri);
CropImage.activity(imageUri)
.setGuidelines(CropImageView.Guidelines.ON)
.setAspectRatio(1, 1)
.setCropMenuCropButtonTitle("저장하기")
.start(SetupActivity.this);
ProfileImage.setImageURI(imageUri);
}
if (result.getResultCode() == Activity.RESULT_OK)
{
Uri resultUri = result.getData().getData();
StorageReference filePath = UserProfileImageRef.child(currentUserID + ".jpg");
final UploadTask uploadTask = filePath.putFile(resultUri);
uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
taskSnapshot.getStorage().getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
final String downloadUrl = uri.toString();
HashMap<String, Object> profileImageMap = new HashMap<>();
profileImageMap.put("profileImage", downloadUrl);
DocumentReference ProfileImageDocRef = db.collection("UsersProfile").document(currentUserID);
ProfileImageDocRef
.update(profileImageMap)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void unused) {
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
});
}
});
}
});
} else if (result.getResultCode() == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE)
{
Toast.makeText(SetupActivity.this, "갤러리사진 다시 가져오새요", Toast.LENGTH_SHORT).show();
}
}
});
activityResultLauncherFirst = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult result) {
if (result.getData() != null) {
if (result.getResultCode() == Activity.RESULT_OK) {
FirstPostUri = result.getData().getData();
ImageViewFirst.setImageURI(FirstPostUri);
if (result.getResultCode() == RESULT_OK) {
StorageReference filePath1 = UserPictureImageRef.child(currentUserID + "1.jpg");
final UploadTask uploadTask1 = filePath1.putFile(FirstPostUri);
uploadTask1.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
taskSnapshot.getStorage().getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
final String downloadUrl1 = uri.toString();
HashMap<String, Object> pictureOneMap = new HashMap<>();
pictureOneMap.put("pictureOne", downloadUrl1);
db.collection("UsersProfile").document(currentUserID)
.update(pictureOneMap)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void unused) {
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
});
}
});
}
});
} else
{
Toast.makeText(SetupActivity.this, "갤러리사진 다시 가져오새요", Toast.LENGTH_SHORT).show();
}
}
}
}
});r code here
【问题讨论】:
-
首先,停止忽略错误。使用
Log.d(TAG, error.getMessage());。您是否在 logcat 中打印了一些内容? -
我想在 db.collection("UsersProfile").document(currentUserID) 中添加五个字段(profileImage、pictureOne、pictureTwo、pictureThree、pictureFour)。但是其中两三个被添加到文档中(currentUserId)。
-
SetupActivity$_25134#0](id:3ad0000968e,api:0,p:-1,c:941) 断开连接:未连接 (req=1)
标签: android google-cloud-firestore