2 글 보임 - 1 에서 2 까지 (총 2 중에서)
-
글쓴이글
-
2023년 9월 18일 15:07 #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 라는 에러가 뜨면서 추가가 되지 않더라구요 혹시 제가 실수한 부분이 어떤 것인가 싶어서 문의드랍니다.
2023년 9월 18일 16:57 #98386
codingapple키 마스터첫 document 만들 때 email : [session.user.email] array로 만들어놔야 $push 사용가능할걸요 else문에선 email이 session.user.email 인걸 찾는게 아니라 현재 문서의 email 항목 array안에 session.user.email이 들어있는지 찾아봐야할듯요
-
글쓴이글
2 글 보임 - 1 에서 2 까지 (총 2 중에서)
- 답변은 로그인 후 가능합니다.