• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 Next.js 게시판 댓글기능 만들기 3 3번 응용문제 질문드립니다.

댓글기능 만들기 3 3번 응용문제 질문드립니다.

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 글쓴이
  • #98360

    백대훈
    참가자
    안녕하세요 선생님
    
    3번 응용문제 좋아요 만드는 것 개발 중에 어려움이 있어 질문드립니다.
    
    
    import {connectDB} from "@/util/database.js"
    import { ObjectId } from "mongodb";
    import { getServerSession } from "next-auth/next";
    import { authOptions } from "../auth/[...nextauth]";
    export default async function handler(요청,응답){
        const client = await connectDB;
        let session = await getServerSession(요청,응답,authOptions)
        if (요청.method == 'POST'){
            const db = client.db("forum")
            if(session){
                요청.body = JSON.parse(요청.body)
                const findid = await db.collection('like').findOne({parent : new ObjectId(요청.body._id)})
                if(findid == null){
                let newlike = {
                    count : 1,
                    parent : new ObjectId(요청.body._id),
                    email : session.user.email
                }
                let result = await db.collection('like').insertOne(newlike)
                return 응답.status(200).json('조아요1')
                }
                else{
                    const findemail = await db.collection('like').findOne({email : session.user.email})
                    if(findemail == null){
                        let push = await db.collection('like').updateOne({parent : new ObjectId(요청.body._id)},{$push : {email : session.user.email}})
                        let result = await db.collection('like').updateOne({parent : new ObjectId(요청.body._id)},{$inc : {count : +1}})
                        return 응답.status(200).json(result)
                    }
                    else{
                        return 응답.status(200).json('중첩불가')
                    }
                }
        }
            }
            
    }
    
    이렇게 개발해서 페이지 별 id로 구분해서 document 를 나누고
    
    중복된 id의 document에서는 email로 좋아요 중복을 구분하려고 하는데
    
    document의 email 항목을 검색해보고 값이 null이면 count를 1 주고,
    email에 현재 session의 email 값을 추가해주고 싶어서 $push를 몽고db 메뉴얼대로 작성해봤는데
    The field 'email' must be an array but is of type string in document 라는 에러가 뜨면서
    추가가 되지 않더라구요 혹시 제가 실수한 부분이 어떤 것인가 싶어서 문의드랍니다.
    
    
    #98386

    codingapple
    키 마스터
    첫 document 만들 때 email : [session.user.email] array로 만들어놔야 $push 사용가능할걸요 
    else문에선 email이 session.user.email 인걸 찾는게 아니라 
    현재 문서의 email 항목 array안에 session.user.email이 들어있는지 찾아봐야할듯요
2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠