queue.createJob('make-thumbnail', jobData) // 작업이 끝난 뒤에 꼭 지워주는 removeOnComplete 옵션을 써야한다. .removeOnComplete(true) .save(err => { if (err) { /* 에러 처리 */ } })
위에서 생성된 작업을 다음과 같이 받아서 실행합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
const kue = require('kue') const queue = kue.createQueue({ /* 작업 큐 설정 */ })
// 작업을 동시에 10개까지 실행 job 개겣를 받는다. queue.process('make-thumbnail', 10, (job, done) => { processImage(job.imageUrl, job.type) .then(() => { done() }) .catch(err => { done(err) }) })
AWS S3
AWS S3는 클라우드 파일 저장소입니다. 여러 프로그래밍 언어로 된 API를 통해 파일을 관리할 수 있고, 저장소 용량에 제한이 없으며 사용한 만큼만 비용을 지불하면 됩니다. (프리 티어 계정이라면 본 실습에서 사용하는 사용량 정도로는 과금이 될 일이 없으니 안심하세요!)
// 혹은 특정 경로에 마운트할 수도 있습니다. // 이제부터 /api/some-path, /api/other-path 주소로 접속해야 합니다. app.use('/api', router) ``` > api경로를 사용하는 router들을 다른 .js파일로 만들어서 개발하면 좋다. ## multer `multer는` body-parser와 유사하지만, application/x-www-form-urlencoded 대신 multipart/form-data 형태의 폼 데이터를 처리하기 위해 사용됩니다. multer를 이용해 폼 데이터가 처리되면, `파일을 나타내는 객체`는 `req.file` 혹은 `req.files`에 저장되고 나머지 폼 데이터는 body-parser와 비슷하게 req.body에 저장됩니다. ```js const multer = require('multer') const upload = multer()
// 하나의 파일 처리 app.post('/photo', upload.single('photo'), (req, res) => { // req.file : 파일 객체 // req.body : 나머지 폼 데이터 })
// 여러 개의 파일 처리 (파일 필드가 모두 같은 이름을 사용할 때) app.post('/photos', upload.array('photo'), (req, res) => { // req.files : 파일 객체로 이루어진 배열 // req.body : 나머지 폼 데이터 })
// 여러 개의 파일 처리 (각각 다른 필드 이름 사용 시) const uploadMiddleware = upload.fields([ { name: 'avatar', maxCount: 1 }, { name: 'gallery', maxCount: 8 } ]) app.post('/photos', uploadMiddleware, (req, res) => { // req.files : 필드 이름을 속성 이름으로, 파일 객체로 이루어진 배열을 값으로 하는 객체 // req.body : 나머지 폼 데이터 })