item.js_3

김형우·2021년 12월 31일
0

node.js

목록 보기
20/26

물품일괄삭제 - DELETE

1. localhost:3000/item/deletebatch

  • console.log(req.body);
    :로그 결과
req.body => [ { code: 10060 }, { code: 10061 }, { code: 10062 } ]
req.body[0].code, req.body[1].code, req.body[2].code
  • 하지만

: 원하는 형태

_id: {$in : [1, 2, 3] }

: mongoDB에서 이런 형식을 설정했음. 따를수밖에

  • 여러 형태가 있을 수 있음
req.body => { code : [10060, 10061, 10062]}
req.body.code[0], req.body.code[1], req.body.code[2],
  • body문에 들어가서 1번 코드를 꺼낼지, body안에 코드문에 들어가서 1번을 꺼내올지

2. 사실 DELETE는 _id만 불러와도 될듯!

  • let arr = []; 여러 항목을 동시에 삭제하기 위해, 항목 번호 (_id)를 배열의 형식으로 가져오기 위해서 arr을 배열의 형태일것이라고 정의한다.

2-1. for 반복문

  • 배열 구성 항목 하나하나에 삭제 명령을 적용하기 위함.

  • for(let i=0; i< req.body.length; i++)
    : 제일 위에서 req.body로 받아온 항목의 길이를 [i]로 정의한다.

  • arr.push( req.body[i].code );
    : 여러 body 안에 각각 있는 code를 꺼내온다는 뜻

body : [ { code: 10014 }, { code: 10015 } ]
{ acknowledged: true, deletedCount: 2 }

3. DB + collection

  • const dbConn = await db.connect(DBURL);
    const coll = dbConn.db(DBNAME).collection(ITEMCOLL);

4. deleteMany - 여러 항목 삭제

  • const result = await coll.deleteMany({ _id: {$in : arr }
    : _id: {$in : [1, 2, 3] } = 이런모양을 원함
    : arr은 이미 배열임

4-1. result

  • console.log(result);
    : CMD> { acknowledged: true, deletedCount: 3 }
if(result.deletedCount === req.body.length){
  return res.send({status:200});
}
profile
The best

0개의 댓글