MongoDB ObjectId error

강정우·2023년 2월 26일
0

DB

목록 보기
29/30
post-thumbnail
  • api를 작성하던 중 자꾸 ObjectId를 메서드로 사용하려면 error가 떠서 개빡쳐서 공식문서를 찾아봐도 안 나왔다.

  • 또한 stackoverflow에 좋아요하 5백개 넘게 달린 답변도 아래 문제와 같이 사용했다.

  • 그런데 해법은 쉽다. 사실 굉장히 간단한 문제인데 간과하기 쉬워서 적어본다.

문제

import {MongoClient, ObjectId} from "mongodb";
async function handler(req, res){
    if(req.method === "POST"){
        const data = req.body;
        const client = await MongoClient.connect("mongoDB URL")
        const db = client.db();
        const postItCollection = db.collection("postIts");
        const result = await postItCollection.updateOne({_id: ObjectId(data.id)}, {$set:{positionX:data.y, positionY:data.x}});
        console.log(result);
        client.close();
        res.status(201).json({message:"success"})
    }
}
export default handler;
  • 저기서 ObjectId는 메서드로 사용할 수 없다고 뜬다.
    내 입장에서는 매개변수로 안에 넣어주는건데 왜 안 뜨지 했는데 앞에 생성자 new를 안 적어줘서 그랬다.;;

    당연하다 클래스인데 ObjectId만 딸랑 적으면 그건 클래스가 아니라 메서드로 사용하는 것이니까;;

해결 식

const result = await postItCollection.updateOne({_id: new ObjectId(data.id)}, {$set:{positionX:data.y, positionY:data.x}});
profile
智(지)! 德(덕)! 體(체)!

0개의 댓글