Firestore에서 사용자별 좋아요 목록을 만들 때
그리고 제작 중에 가장 고생한 Cloud Firestore의 부분에 대해 남겨두려고 생각합니다✨
고생한 점으로는
↑ 게시된 이미지에 대해 좋을 경우,
사진과 같이, 좋은 물건의 일람을 볼 수 있는 Like 화면을 만들었습니다.
그러나,,,!
A의 사람이 좋은 물건이, B의 사람이 좋은을 누르지 않아도 B의 사람의 라이크 화면에도 표시되고 있었습니다.
이번에는
A의 사람이 좋은 물건이 A의 사람에게만 보이도록,
B 사람이 좋은 물건이 B 사람에게만 보이도록하는 해결책을 발견했기 때문에
쓰겠습니다 ↓ ↓ ↓ ↓
CloudFirestore 구조
이와 같이 LikeId에 User ID (user.uid)를 배열 (Array 형)으로 넣으면 잘되었습니다 😏
코드 1(좋아하는 투고가 표시되고 있는 화면)
func likeSwipe(){
let saveDocument = Firestore.firestore()
let user = Auth.auth().currentUser
let docId = UserDefaults.standard.object(forKey: "docId") as! String
let addDocument = saveDocument.collection("Posts")
let query = addDocument.document(docId)
query.updateData([
"LikeId" : FieldValue.arrayUnion([user!.uid])
])
↑이것을 이이네 버튼을 눌렀을 때의 동작에 더해 주세요.
이제 currentUser의 UserID가 LikeId에 추가됩니다.
코드2(Like 화면_이이네한 투고의 일람을 볼 수 있는 화면)
func fetchData(completion: @escaping () -> Void){
let user = Auth.auth().currentUser
let saveDocument = Firestore.firestore()
let uploadDocument = saveDocument.collection("Posts")
let query = uploadDocument.whereField("LikeId", arrayContains: user!.uid)
query.getDocuments { (querySnapshot, error) in
↑ 이제 query (사용자가 값을 LikeId에 넣고 있는지 검색)하고
사용자가 좋아하는 것 (LikeId에 넣은 것) 만 표시됩니다.
마지막 코드 이후는 당기는 데이터를 평소대로 걸으면 오케입니다.
htps : // 푹 빠져라. 오, ぇ. 코 m / 드 cs / 푹신 s 잡아 / 쿠에 ry - 타타 / 게 t - 였어? hl = 그럼
(↑마지막 코드 이후의 참고가 되면,,)
덤(삭제할 때의 코드)
Cell을 지울 때(투고의 이이네를 제외했을 때)
let docId = self.documentIds[indexPath.row]
let user = Auth.auth().currentUser
let saveDocument = Firestore.firestore()
let uploadDocument = saveDocument.collection("Posts")
uploadDocument.document(docId).updateData([
"LikeId": FieldValue.arrayRemove([user!.uid])
])
이와 같이, Array를 Remove 하는 것으로 자신의 좋은 일람으로부터 사라져도,
다른 사람의 이이네 일람에는 남은 만마입니다.
이상
이제 Cloud Firestore를 사용하여 사용자별로 좋아하는 목록을 만들 수 있다고 생각합니다 ☺️
만약 좋다면 다운로드 해보세요 👏 ✨
htps : // 아 ps. 아 ぇ. 이 m/jp/아니 p/바 gぇ/이 d1518188746
Reference
이 문제에 관하여(Firestore에서 사용자별 좋아요 목록을 만들 때), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/uizprg/items/6f084e2dfb28ff15b4d8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)