물품일괄등록 - POST
router.post('/insertbatch', upload.array("file"), async function(req, res, next) {upload.array("file") = 배열형식으로 "file"에 들어갔다가 req로 감.const dbConn = await db.connect(DBURL);
const coll = dbConn.db(DBNAME).collection(SEQCOLL);
console.log(req);
console.log(req.files);
: 1개일때 : file // 여러개일때 : files
: files는 배열 형식으로 들어온다. // files : [{ },{ }]

console.log(req.body);
: 물품명, 내용, 수량, 가격
: body도 배열형식으로 들어온다. // body : [{ },{ }]



for(let i=0; i< count; i++){ // i = 0 1 i는 name값의 길이를 사용한다.const count = req.body.name.length;const result = await coll.findOneAndUpdate(
{ _id : 'SEQ_ITEM_NO'}, { $inc : { seq : 1 } }
);
같은 번호를 부여해서는 안되기때문에 for 반복문 안에 넣어서 SEQ_ITEM_NO시퀀스도 두번 돌아가게 만든다.
obj 변수 정의
: let arr = [];
: [{obj},{obj}] = 배열안의 JSON 형태로 보낼것이기 때문
: 중요!
let obj = {
_id : result.value.seq,
name : req.body.name[i],
content : req.body.content[i],
price : req.body.price[i],
quantity : req.body.quantity[i],
regdate : new Date(),
// file
filename : req.files[i].originalname,
filedata : req.files[i].buffer,
filetype : req.files[i].mimetype,
filesize : req.files[i].size
}
arr.push(obj);for문{
name : [ 'vueper!!!' , 'node!!!' ],
content : [ '내용 slide' , '내용 node' ],
price : [ '456' , '123' ],
quantity: [ '654' , '321' ]
}
const coll1 = dbConn.db(DBNAME).collection(ITEMCOLL);
const result1 = await coll1.insertMany(arr);
coll.insertOne({ }); = 한번coll.insertMany( [ {},{},{} ] ); = 여러번 = 배열console.log(result1);
--- 이렇게 나옴 ---
{
acknowledged: true,
insertedCount: 2, <<- 이거!!
insertedIds: { '0': 10055, '1': 10056 }
}
insertedCount가 count와 같으면 200!if(result1.insertedCount === count){
return res.send({status:200})
}