item.js_4

김형우·2021년 12월 31일
0

node.js

목록 보기
19/26

물품일괄수정 - PUT

localhost:3000/item/updatebatch

1. field를 array로 정한다.

  • router.put('/updatebatch', upload.array("file"), async function(req, res, next)
    : 모든 결과들이 file 이라는 이름아래에 배열형식으로 잡히게 된다.

  • const count = req.body.name.length;
    : 일괄 수정할 항목의 개수를 name의 개수로 잡는다.

2. DB + collection

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

3. 진행

  • let cnt = 0;
    : 변경한 라인의 숫자... 라는데 아직 이해못함
let obj = {
  name : req.body.name[i],
  content : req.body.content[i],
  price : req.body.price[i],
  quantity : req.body.quantity[i],
  regdate : new Date(),
};
  // req.files ==> []
  // if(req.files[i]===null){
  //     console.log('null');
  // }
  if(typeof req.files[i] !== 'undefined'){
    console.log('undefined'); // 파일첨부안했으면 'undefined' 뜸
    obj.filename = req.files[i].originalname,
    obj['filedata'] = req.files[i].buffer,
    obj.filetype = req.files[i].mimetype,
    obj.filesize = req.files[i].size
  }

4. result

const result = await coll.updateOne( // updateMany는 같은걸 바꾸는것 
  // updateOne을 반복문을 돌려서 비슷한 모양을 만드는것.
  { _id : Number(req.body.code[i]) },
  // code를 숫자로 바꿔야함
  // 이런형태기 때문
  // {
  // code : [10060, 10061]    
  // name: [ 'vueper!!!', 'node!!!' ],
  // content: [ '내용 slide', '내용 node' ],
  // price: [ '456', '123' ],
  // quantity: [ '654', '321' ]
  // }
  {$set: obj}
);
console.log(result);
// undefined
// {
// acknowledged: true,
// modifiedCount: 1,
// upsertedId: null,
// upsertedCount: 0,
// matchedCount: 1
// }
// undefined
// {
// acknowledged: true,
// modifiedCount: 1,
// upsertedId: null,
// upsertedCount: 0,
// matchedCount: 1
// }
  • 두개가 온다. 두 번호를 수정했기 때문.
profile
The best

0개의 댓글