express insertMany

이태규·2021년 12월 31일
0

express

목록 보기
12/28
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에 담겨서 온다.

profile
한 걸음씩 나아가자

0개의 댓글