MongoError: E11000와 TIL(5/24)

정성현·2022년 5월 23일
0

항해99

목록 보기
27/33

문제 원인

Model Schema 를 수정 후, 기존 데이터 (수정 전 Schema) 의 Index key 값이 새로 생성하려는 데이터와 충돌하면서 발생하는 에러.

해결과정

  1. mongo console 에서 db.{collection 명}.getIndexes() 이용, 문제가 생긴 key 값을 찾기 (수정 후 삭제된 key 값).
  2. 해당 인덱스 값 삭제 ex) db.user.dropIndex({"username" : 1})

Node.js를 이용한 서버

주특기 입문 과제중 CRUD의 개념과 REST API에 대한 개념이 확실하게 이해 되는 것 같다.

GET METHOD를 활용한 조회 방식

router.get("/articles",async (req,res)=>{
   // res.send("전체 게시글 조회 페이지");
    const articles_list = await Articles.find({},{title : 1, names : 1, date : 1}).sort({date: -1});
    res.json({articles_list});
   
});

POST METHOD를 활용한 게시글 작성

router.post("/articles",async (req,res)=>{
    const today = new Date();
    const {title,names,comment,password} = req.body;
    await Count.updateOne({countstring: "count"},{$inc : {count: 1}});
    
    const Id = (await Count.find({ countstring: 'count' }))[0].count
    await Articles.create({title,names,comment,today,password,Name_Id : Id, date : today});
    
    res.json({success: true});
});

PUT METHOD를 활용한 게시글 수정

router.put("/articles:Name_Id/modify",async (req,res)=>{
    const {Name_Id} = req.params;
    const {title,names,password,comment} = req.body;
    const pass = await Articles.find({Name_Id: Name_Id});

    if(pass.password != password)
    {
        return res.status(400).json({success:false, errorMessage: " 비밀번호가 틀렸습니다."});
    }else{
        await Articles.updateOne({Name_Id,password},{title,names,comment});
        const articles = await Articles.find({Name_Id : Number(Name_Id)});
        res.json({articles})
    }
    
   
});

DELETE METHOD를 활용한 게시글 삭제

router.delete("/articles:Name_Id/delete",async (req,res)=>{
    const {Name_Id} = req.params;
    const {password} = req.body;

    const pass = await Articles.find({Name_Id: Name_Id});

    if(pass.password != password)
    {
       return res.status(400).json({success:false, errorMessage: " 비밀번호가 틀렸습니다."});
    }else
    {
        await Articles.deleteOne({Name_Id,password});
        res.json({success:true});
    }
});
profile
I want to be programmer

0개의 댓글