물품등록
나중에 서버를 바꾸거나 DB를 바꿀때 관리하기 쉽도록 db.js 파일을 만들어서 따로 관리한다.
module.exports = {
// mongodb://아이디:암호@서버주소:포트번호/DB명
mongodbURL : 'mongodb://id201:pw201@1.234.5.158:37017/db201',
mongoUSER : 'id201',
mongoDB : 'db201',
mongoPW : 'pw201',
// collection도 여기에 넣으면 좋음.
itemCollection : 'item',
itemSeqCollection : 'seqitem'
}
const DBURL = require('../config/db').mongodbURL;
const DBNAME = require('../config/db').mongoDB;
const SEQCOLL = require('../config/db').itemSeqCollection;
const ITEMCOLL = require('../config/db').itemCollection;
CMD> npm i multer --save
const multer = require('multer');
: 불러오기
const upload = multer({storage:multer.memoryStorage()});
: 메모리(DB에 저장)
const dbConn = await db.connect(DBURL);
: config/db.js의 내용 중 DBURL 불러오기
const coll = dbConn.db(DBNAME).collection(SEQCOLL);
: config/db.js의 내용 중 DBNAME, SEQCOLL 불러오기
const result = await coll.findOneAndUpdate
: 하나만 업데이트 함.
: 형태는
( { 조건 }, {업데이트 되는 항목} )
( { _id : 'SEQ_ITEM_NO'}, { $inc : { seq : 1 } } );
: 'SEQ_ITEM_NO'를 1 증가시킴
여기까지 물품번호 1씩 증가 시퀀스
router.post('/insert', upload.single("file"), async function(req, res, next)
에서 upload.single("file")
부분 때문에 field명 file 아래에 이미지파일 정모가 생성됨.console.log(req);
했을 경우 나타나는 로그 // 중요!!const obj = {
_id : result.value.seq, // 물품번호 (자동부여)
name : req.body.name, // 물품명
content : req.body.content, // 물품내용
price : req.body.price, // 가격
quantity : req.body.quantity, //수량
//upload.single("file") 때문에 req.file 아래에 생성됨
filename : req.file.originalname,
filetype : req.file.mimetype,
filedata : req.file.buffer,
filesize : req.file.size,
regdate : new Date(),
};
const coll1 = dbConn.db(DBNAME).collection(ITEMCOLL);
: config/db.js의 내용 중 DBNAME, ITEMCOLL 불러오기
obj
의 모든 항목을 업로드 (추가) 한다.POSTMAN
form-data
로 설정한다.NoSQLBooster
'SEQ_BOARD_NO'
: 게시물 번호'SEQ_BOARDREPLY_NO'
: 게시물 댓글 번호'SEQ_ITEM_NO'
: 물품수량db.sequence.insert([
{ _id : 'SEQ_BOARD_NO', seq : 1 },
{ _id : 'SEQ_BOARDREPLY_NO', seq : 1 },
{ _id : 'SEQ_ITEM_NO', seq : 10001 },
]);
var express = require('express');
var router = express.Router();
// npm i mongodb --save
const db = require('mongodb').MongoClient;
const DBURL = require('../config/db').mongodbURL;
const DBNAME = require('../config/db').mongoDB;
const SEQCOLL = require('../config/db').itemSeqCollection;
const ITEMCOLL = require('../config/db').itemCollection;
// CMD> npm i multer --save
const multer = require('multer');
// 특정폴더에 파일을 보관 or 메모리(DB에 저장)
const upload = multer({storage:multer.memoryStorage()});
// 물품등록(POST) : localhost:3000/item/insert
// 이미지1, 물품코드(x), 물품명, 물품내용, 물품가격, 재고수량, 등록일(x)
router.post('/insert', upload.single("file"), async function(req, res, next) {
try {
const dbConn = await db.connect(DBURL);
const coll = dbConn.db(DBNAME).collection(SEQCOLL);
const result = await coll.findOneAndUpdate(
{ _id : 'SEQ_ITEM_NO'}, { $inc : { seq : 1 } }
);
console.log(result.value.seq);
const obj = {
_id : result.value.seq, // 물품번호 (자동부여)
name : req.body.name, // 물품명, 물품내용, 가격, 수량
content : req.body.content,
price : req.body.price,
quantity : req.body.quantity,
//upload.single("file") 때문에 req.file 아래에 생성됨
filename : req.file.originalname,
filetype : req.file.mimetype,
filedata : req.file.buffer,
filesize : req.file.size,
regdate : new Date(),
};
const coll1 = dbConn.db(DBNAME).collection(ITEMCOLL);
const result1 = await coll1.insertOne(obj);
if(result1.insertedId > 0){
return res.send({status:200});
}
return send({status:200});
// console.log(req); // 중요!
// return res.send({status:200});
}
catch (err) {
console.error(err);
return res.send({status:-1, result : err});
}
});
module.exports = router;