router.post('/insertbatch', upload.array("file"),
async function(req,res,next){
try{
const dbConn = await db.connect(DBURL)
const coll = dbConn.db(DBNAME).collection('sequence');
const count = req.body.name.length;
let arr = [];
for(let i = 0; i < count; i++){
const result = await coll.findOneAndUpdate(
{ _id: 'SEQ_ITEM_NO'}, {$inc : {seq:1}}
)
const 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],
fileName: req.files[i].originalname,
fileData: req.files[i].buffer,
fileSize: req.files[i].mimetype,
fileType: req.files[i].size,
regdate : new Date()
}
arr.push(obj)
}
const coll1 = dbConn.db(DBNAME).collection('item');
const result1 = await coll1.insertMany(arr)
// coll.insertOne({})
// coll.insertMany([{},{},{}])
if(result1.insertedCount === count){
return res.send({status : 200})
}
return res.send({status : 0})
catch(err){
console.error(err);
return res.send({status: -1, result : err})
}
});
파일을 여러개 보내야 할 때에는 upload.array("file")을 붙여줘야 한다.
single >> array로 바뀜.
여기서 핵심은 반복문을 통해서 넣어줘야 한다는 거다.
insertMany의 형태는
coll.insertMany([{ },{ },{ }])이기 때문에
{ } 안에 데이터를 넣고, 배열안에 넣는 반복문을 만들어 준다.
single로 파일을 보내면 file에 데이터가 담겨오는데 array로 보내면
files에 데이터가 담겨온다. 하나만 보내도 files에 담겨서 온다.