작성
·
234
0
팔로우/언팔로우에서 [UI분기] 제목으로 올라간 강의에 대한 질문입니다.
.setData({document['email']: true});
이렇게 구현을 하면,
유저A를 팔로우한 상태에서 유저 B를 팔로우하면,
유저 A를 팔로우한다는 정보가 Database 에서 사라집니다.
.setData({document['email']: true});
이게 그냥 덮어쓰는 느낌인것같군요...
이 실험은 A = test@test.com 으로 B = 자기자신
으로 놓고 실험할 수 있습니다.
이 버그를 어떻게 해결할 수 있을까요?
답변 4
2
0
예전에 답변 후 추가 질문이 없어서 잘 되는줄 알고 있었습니다.
살펴보니 이전 데이터가 삭제되는 것이 문제네요.
setData() 메서드의 두번째 파라미터로 merge: true 를 다음과 같이 추가해 보시겠어요?
이렇게 하면 user.email 아래에 있는 기존 데이터를 삭제하지 않고 새로운 데이터를 추가하게 됩니다.
제가 이 코드 실행후 구글 로그인이 안되는 현상 때문에 해결이 안되서 확인은 못 해 봤습니다.
혹시 잘 되신다면 답변 달아주시면 완성 코드에 반영과 강의 영상에 부연설명을 추가하는데 도움이 될 것 같습니다.
감사합니다.
// 팔로우
void _follow() {
Firestore.instance
.collection('following')
.document(user.email)
.setData({document['email']: true}, merge: true);
Firestore.instance
.collection('follower')
.document(document['email'])
.setData({user.email: true}, merge: true);
}
// 언팔로우
void _unfollow() {
Firestore.instance
.collection('following')
.document(user.email)
.setData({document['email']: false}, merge: true);
Firestore.instance
.collection('follower')
.document(document['email'])
.setData({user.email: false}, merge: true);
}
0
안녕하세요. 위의 내용으로 팔로우, 언팔로우 문제를 겪고 있습니다.
follower 콜렉션이 만들어지지 않은 상황에서는 updateDAta가 작동하지 않습니다.
처음에 setData나 add로 이메일을 추가하고 난 후 updateData가 작동되어야 할 것 같은데 난감하네요.
혹시나 해서 setData로 콜렉션이 만들어지고 난 후 updateData로 수정하고 동작을 해보니 필드(bool)에서 이메일이
아이디, 도메인, com 이런식으로 나누어 지면서 데이타가 이상하게 들어갑니다.
0
아앗. 버그가 맞네요. 이런 실수를... 죄송합니다.
지금 테스트를 할 수 없어서 확인은 못 해 봤지만, 일단 setDate 대신 updateData로 고쳐보세요.
_follow(), _unfollow() 모두요.