[JavaScript] GridFs 2편

최예닮·2022년 12월 2일
0
post-thumbnail

대한민국 !!!!!! 16강 !!!! 🇰🇷 최고!!!!!

흠흠... 흥분을 가라앉히고 이제 어제에 이어서 GridFS의 GET 을 보도록 해보자

const express = require("express")
const router = express.Router()
const multer = require("multer");
const { ObjectID } = require('mongodb');
const { Readable } = require('stream');
const { createModel } = require('mongoose-gridfs');

router.get('/:trackID', (req, res) => {
    if(!req.params.trackID) {
        return res.status(400).json({
            message: "trackId가 다르니 확인해주세요."
        });
    }
    res.set('content-type', 'video/mp4');
    res.set('accept-ranges', 'bytes');
    
    try {
        const reader = Attachment.read({_id: ObjectID(req.params.trackID)});   
        reader.on('data', (chunk)=> {
            res.write(chunk);
        });
        reader.on('close', () => {
            console.log("확인완료!");
            res.end();
        });
    } catch(err) {
        console.log(err);
        res.status(404).json({
            message:"Files 에 ID 값을 찾을 수 없어요 확인해주세요.",
        });
    }
});

어제 포스트를 하면 _id로 전체를 관리할 수 있는 key 값이 생기고 params 값에 key 값인 _id 를 넣으면 chunk로 분리되었던 파일들을 볼 수 있다. 한번 해보겠다.

Headers 값을 보면 내가 코드에 적어놓은 type 값들이 정상적으로 저장되어있는 것을 볼 수 있다. 자 여기서 Response 에서 코드를 오픈하면 짜라란~

내가 저장한 동영상을 불러올 수 있게 된다 ! 와우 !!!! 선더클라이언트에서도 동영상 재생이 되는구나... 신기방기... 마찬가지로 음성파일인 mp3를 mp4로 저장하여 불러와도 정상적으로 잘 작동됨을 확인할 수 있다.
화질이 깨지지도 않고 음질이 깨지지 않으니 괜찮은 방법인거 같다.

다만.... 몇가지 문제를 우리는 맞이하게 되는데 ..... 눈물 없이는 들을 수 없는 이야기... 이다... 뭔지 알고 싶다면.... 29일차 글을 읽어보자 ....

profile
산을 오르려고 하는데 이제 주차장에 막 주차한 초보개발자

0개의 댓글