물품일괄등록 - 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})
}