Firestore 하나의 필드만 업데이트
데이터베이스가 있습니다.순서는 컬렉션 - 문서 - 해시 맵입니다.예:
users - 컬렉션의 이름
users.uid - 문서의 이름
문서의 해시맵은 많은 해시맵 사용자 데이터로 구성되어 있습니다. 해시맵
해시맵: 사용자의 이름이 키이고 전화, 위치 등이 값입니다.하나의 사용자 이름에 대해 하나의 필드(위치)만 업데이트해야 하는데 어떻게 하는지 이해할 수 없습니까?
다음 방법을 시도했습니다(알렉스의 전화번호 업데이트).
User user = new User();
user.setPhone(131902331);
Map<String,RealmObject> userMap = new HashMap<>();
userMap.put("alex",user);
mFirebaseFirestore
.collection("users")
.document(mFirebaseAuth.getUid())
.set(userMap, SetOptions.merge())
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
LOG.info("Success");
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
LOG.error("Failure "+e.toString());
}
});
내가 뭘 잘못하고 있는 거지?
거의 1년 전의 질문이라는 것은 알지만, 이것은 누군가에게 도움이 될 수 있습니다.점 표기법 사용
db.collection("users")
.document("frank")
.update({
"age": 13,
"favorites.color": "Red"
});
전화할 때set()
문서에서 해당 문서의 기존 내용이 전달된 데이터로 바뀝니다.
맵에서 지정한 필드의 값만 업데이트하려면 다음을 사용합니다.update()
:
mFirebaseFirestore
.collection("users")
.document(mFirebaseAuth.getUid())
.update(userMap)
문서 업데이트에 대한 내용은 Firestore 설명서를 참조하십시오.
2021년 기준으로 Firebase-firestore-ktx를 사용하는 경우 Alister 씨의 답변 구문이 약간 변경되었습니다(문서 참조).다른 버전의 라이브러리를 사용하는 사람들에게 여전히 유효할 수 있기 때문에 답변을 편집하지 않았습니다.
// Assume the document contains:
// {
// name: "Frank",
// favorites: { food: "Pizza", color: "Blue", subject: "recess" }
// age: 12
// }
//
// To update age and favorite color:
db.collection("users").document("frank")
.update(mapOf(
"age" to 13,
"favorites.color" to "Red"
))
저는 이 대답들 중 일부에서 이상한 표기법을 발견하고 있습니다.소방서 매개변수가 업데이트된 것이 아닐까요?어쨌든, 저는 저만의 답을 올리고 싶었습니다.
문서의 단일 요소를 업데이트하려면 다음 코드를 사용합니다.
db.collection("users").document("frank")
.update("age", 13);
update() 매개 변수는 콜론으로 구분되지 않고 필요한 만큼의 키/값 쌍을 허용하며 이러한 응답 중 일부에 표시된 것처럼 배열 표기법 {}에 포함되지 않습니다.이들은 단순히 쉼표로 구분되어 추가됩니다.아래 참조:
.update(키, 값, 추가 키, 추가 값)
업데이트() 후 필요에 따라 OnSuccess/OnFailure 청취자를 자유롭게 추가할 수 있습니다.
동적 중첩 참조:
def nest_update(new, parent):
return {parent+'.'+new: val for new, val in list(new.items())}
용도:
old = {'nested': {'a': 123,'b': 456, 'c': 789}}
new = {'b': 0}
print('\nOld: ', old)
print('New: ', nest_update(new, 'nested'))
print('New should be: ', {'nested.b': 0})
# OUTPUT
Old: {'nested': {'a': 123, 'b': 456, 'c': 789}}
New: {'nested.b': 0}
New should be: {'nested.b': 0}
언급URL : https://stackoverflow.com/questions/47770161/firestore-update-only-one-field
'programing' 카테고리의 다른 글
SQL Server에서 두 날짜 사이의 모든 날짜 가져오기 (0) | 2023.07.07 |
---|---|
vuex 가입자의 메서드를 어떻게 감시합니까? (0) | 2023.07.02 |
Electron을 사용할 때 Angular 2의 기본 href를 어떻게 구성해야 합니까? (0) | 2023.07.02 |
TypeScript에서 입력된 개체 리터럴을 지정하려면 어떻게 해야 합니까? (0) | 2023.07.02 |
사용자 지정 ErrorWebExceptionHandler 생성 실패 (0) | 2023.07.02 |