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

좋은 웹페이지 즐겨찾기