복붙노트

[MONGODB] 표현 GridFS에서 POST 요청에서 데이터 스트림을 저장, MongoDB를, Node.js를

MONGODB

표현 GridFS에서 POST 요청에서 데이터 스트림을 저장, MongoDB를, Node.js를

내가 먼저 임시 파일로 서버에 어디를 저장하지 않고 GridFS에 직접 이미지를 게시 할 수있는 방법을 알아 내려고 노력하고있다.

(. 크롬 내선) I는 파일을 게시 할 우체부를 사용하고 있는데 사용하여 파일이 게시물을 저장 관리 :

req.pipe(fs.createWriteStream('./test.png'));

readStream가 서버에있는 파일을 생성 할 때 나는 또한 readStream에서 GridFS에 직접 저장할 수입니다. (참조 코드)

나는 POST를 수신하고 기본적으로 단지 savePic.js에게이 전달 다음 파일, saveFromReq.js 있습니다.

saveFromReq.js :

var express = require('express');
var app = express();
var savePic = require('./savePic');
var fs = require('fs');
var GridStore = require('mongodb').GridStore;
var pic = './square.png';
var picID;



//When the following

 //var pic = fs.createReadStream('./square.png', {autoClose: true});

//is not commented out, and 'req' is replaced with 'pic' in the savePic function,
//the file square.png is stored correctly to GridFS

app.post('/picture', function(req, res){

    savePic(req, function(id){});
    res.writeHead(200, {'Content-Type': 'text' });
    res.end("Sucsess!\n");

});

app.listen(process.env.PORT || 3413);

savePic.js :

var savePic = function(req, callback){


var Db = require('mongodb').Db,
    MongoClient = require('mongodb').MongoClient,
    Server = require('mongodb').Server,
    ReplSetServers = require('mongodb').ReplSetServers,
    ObjectID = require('mongodb').ObjectID,
    Binary = require('mongodb').Binary,
    GridStore = require('mongodb').GridStore,
    Grid = require('mongodb').Grid,
    Code = require('mongodb').Code,
    BSON = require('mongodb').pure().BSON,
    assert = require('assert');
    fs = require('fs');

    //When the following 

      //req.pipe(fs.createWriteStream('./test.png'));

    //is not commented out, the correct image is stored to test.png, and 
    //the sequence after req.on("data"... starts
    //(That sequence does not start at all when this is commented out..)

var fileId = new ObjectID();
var db = new Db('testDB', new Server('localhost', 27017));
// Establish connection to db
db.open(function(err, db) {


  var gridStore = new GridStore(db, 'test', 'w');

  //open 
  gridStore.open(function(err, gridStore) {
    console.log("opened");


    req.on("data", function (data) {
        console.log("data recieved");
            gridStore.write(data, function (err, gridStore) {
                if (err) {
                    console.log("error writing file");
                }
            });
        });
     req.on("end", function () {
            gridStore.close(function (err, gridStore) {
                if (!err) {
                    console.log("The file has been stored to database.");
                    db.close();
                }
            });
        });
           req.pipe(gridStore);


      });




});
callback(fileId);
};
module.exports = savePic;

어떤 도움을 주시면 감사하겠습니다!

해결법

  1. ==============================

    1.gridfs 스트림은 매우 간단합니다 :

    gridfs 스트림은 매우 간단합니다 :

    // `gfs` is a gridfs-stream instance
    app.post('/picture', function(req, res) {
      req.pipe(gfs.createWriteStream({
        filename: 'test'
      }));
      res.send("Success!");
    });
    
  2. ==============================

    2.@의 robertklep의 대답은 정확하지만, 나는 그의 대답에 뭔가를 추가하고 싶습니다. 당신이 저장된 파일의 메타 데이터를 다시 보낼 수있는 방법이 코드를 보여줍니다.

    @의 robertklep의 대답은 정확하지만, 나는 그의 대답에 뭔가를 추가하고 싶습니다. 당신이 저장된 파일의 메타 데이터를 다시 보낼 수있는 방법이 코드를 보여줍니다.

    app.post('/picture', function(req, res) {
      req.pipe(gfs.createWriteStream({
        filename: 'test'
      }).on('close', function(savedFile){
        console.log('file saved', savedFile);
        return res.json({file: savedFile});
      }));
    })  
    
  3. ==============================

    3.이 몽구스와 나를 위해 일한 :

    이 몽구스와 나를 위해 일한 :

     var gfs = Grid(mongoose.connection.db, mongoose.mongo);
        var writeStream = gfs.createWriteStream({
            filename: name,
            mode: 'w',
            content_type: 'video/mp4'
        });
        writeStream.on('close', function() {
            console.log('close event');
        });
    
        fs.createReadStream('uploads/' + name + '/' + name + '.mp4').pipe(writeStream);
        console.log('stream.write: ' + name + '/' + name + '.mp4');
    

    나는 클라이언트 측 브라우저에서 비디오를 얻기로 며칠을 고민하고있다. 그게 내가 지금까지 뭘하려 :

    var readstream = gfs.createReadStream({
            filename: file.filename
        });
    
        readstream.on('data', function(data) {
            res.write(data);
            console.log(data);
        });
    
        readstream.on('end', function() {
            res.end();        
        });
    
        readstream.on('error', function (err) {
            console.log('An error occurred!', err);
            throw err;
        });
    

    MongoDB의 측면 모습 등에 내 데이터 :

    그리고 contentType이는 '비디오 / MP4'는 것입니다 :

    브라우저 측 로깅이 인쇄 :

    개체 {0 ","1 ","2 ","3 ","4 "F", 5 : "t", 6 "Y"7 "P", 8 "I", 9 : "S", 85003 더 ...}

    누군가가 내 라이브 저장시겠습니까? 나는 당신이이 곳에서 편리하지로 내 게시물을 볼 수 없습니다 바랍니다.

  4. ==============================

    4.전체 코드는`잘 nodejs.This에 gridfs를 사용하여 MongoDB의 txtfile을 작품 삽입

    전체 코드는`잘 nodejs.This에 gridfs를 사용하여 MongoDB의 txtfile을 작품 삽입

    var에 몽구스 =은 ( "몽구스")을 필요로; var에 gridfsstream의 =은 ( "gridfsstream")을 필요로; var에 FS는 = ( "FS")을 필요로; mongoose.connect ( "MongoDB를 : // 로컬 호스트 : 27017 / testimage"); VAR CONN = mongoose.connection; gridfsstream.mongo = mongoose.mongo; conn.once ( "개방"함수 () {     CONSOLE.LOG는 ( "데이터베이스가 성공적으로 연결");     VAR GFS = gridfsstream (conn.db);     VAR writestream = gfs.createWriteStream ({         파일 이름 : "danger.txt"     });     fs.createReadStream ( "sivakasi.txt") 파이프 (writestream).;     writestream.on ( "가까운", 기능 (파일)     {         을 console.log ( "gridfs를 사용하여 MongoDB에 성공적으로 저장"file.filename +);     });     writestream.on ( "오류", 기능 (파일)     {         CONSOLE.LOG은 (는 file.filename + "를 사용하여 MongoDB gridfs에 저장되지 않은");     }); }); conn.on ( "오류"함수 () {     을 console.log ( "데이터베이스를 다시 시도 연결되지!"); });

    `

  5. ==============================

    5.전체 코드는 nodejs는 server.This 코드의 이미지가 잘 작동하는지 gridfs 시스템과 디스플레이를 사용하여 MongoDB에서 해당 이미지를 저장 HTML에서 이미지를 게시 할 수 있습니다.

    전체 코드는 nodejs는 server.This 코드의 이미지가 잘 작동하는지 gridfs 시스템과 디스플레이를 사용하여 MongoDB에서 해당 이미지를 저장 HTML에서 이미지를 게시 할 수 있습니다.

    var에 급행 =은 ( "표현")이 필요합니다; var에 bodyparser의 =은 ( "bodyparser")을 필요로; var에 multer의 =은 ( "multer")을 필요로; var에 응용 프로그램 =)은 (표현; VAR 업로드 = multer ({대상 : '/ tmp를 /'}); app.use (bodyparser.urlencoded ({확장 : FALSE})); app.post ( "/ uploadimage"upload.single ( "파일") 함수 (요청, 응답) {     var에 몽구스 =은 ( "몽구스")을 필요로;     var에 gridfsstream의 =은 ( "gridfsstream")을 필요로;     var에 FS는 = ( "FS")을 필요로;     mongoose.connect ( "MongoDB를 : // 로컬 호스트 : 27017 / testimage");     VAR 콘 = mongoose.connection;     gridfsstream.mongo = mongoose.mongo;     con.once ( "개방"함수 ()     {         CONSOLE.LOG는 ( "테스트 이미지 데이터베이스가 성공적으로 연결");         VAR GFS = gridfsstream (con.db);         VAR readstream = fs.createReadStream (request.file.originalname);         VAR writestream = gfs.createWriteStream ({             파일 이름 : "mentorpicthree.jpg"         });         readstream.pipe (writestream);         writestream.on ( "닫기"함수 ()         {             을 console.log ( "이미지를 성공적으로 MongoDB를 데이터베이스에 저장");             fs.readFile (request.file.originalname 함수 (ERR, 데이터)             {                 경우 (ERR)                 {                     response.writeHead (404, { "Content-Type을": "텍스트 / 일반"});                     ( "오류") CONSOLE.LOG;                 }                 그밖에                 {                         response.writeHead (200, { "Content-Type을": "이미지 / JPG"});                         을 Response.End (데이터);                 }             });         });         writestream.on ( "오류"함수 ()         {             CONSOLE.LOG는 ( "이미지가 MongoDB를 데이터베이스에 저장되지");         });     });     con.on ( "오류"함수 ()     {         을 console.log ( "데이터베이스를 다시 시도 연결되지!");     }); }); app.listen (8086, 함수 () {     을 console.log ( "서버 포트 8086에서 실행"); });      파일 업로드 </ TITLE> </ head> <body> <p> 라이언 Dhal </ p> <form 조치 = "http://127.0.0.1:8086/uploadimage"METHOD = "POST"에 enctype = "multipart / form-data"로>     <input 타입 = "파일"NAME = "파일">     로 <br>     <input 타입 = "제출"값 = "업로드"> </ FORM> </ body> </ HTML></p> </li> </ul> <p>from <a href='https://stackoverflow.com/questions/20860005/storing-data-stream-from-post-request-in-gridfs-express-mongodb-node-js' target='_blank'>https://stackoverflow.com/questions/20860005/storing-data-stream-from-post-request-in-gridfs-express-mongodb-node-js</a> by cc-by-sa and MIT license</p></div> <!-- System - START --> <!-- System - END --> <!-- Adfit_PC - START --> <!-- Adfit_PC - END --> <!-- GoogleAdsenseForResponsive - START --> <div class="tt_adsense_bottom" style="margin-top:30px;"> <DIV class='ads_adsense_img' style='margin:40px 0px 40px 0px;'> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- 디스플레이광고만 --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-8393857339019314" data-ad-slot="7474886381" data-ad-format="auto"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </DIV> </div> <!-- GoogleAdsenseForResponsive - END --> <script onerror="changeAdsenseToAdfit()" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9527582522912841" crossorigin="anonymous"></script> <!-- inventory --> <ins class="adsbygoogle" style="margin:50px 0; display:block" data-ad-client="ca-pub-9527582522912841" data-ad-slot="4947159016" data-ad-format="auto" data-full-width-responsive="true" data-ad-type="inventory" data-ad-adfit-unit="DAN-HCZEy0KQLPMGnGuC"></ins> <script id="adsense_script"> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <script> if(window.ObserveAdsenseUnfilledState !== undefined){ ObserveAdsenseUnfilledState(); } </script> <div class="container_postbtn #post_button_group"> <div class="postbtn_like"><script>window.ReactionButtonType = 'reaction'; window.ReactionApiUrl = '//cnpnote.tistory.com/reaction'; window.ReactionReqBody = { entryId: 12537 }</script> <div class="wrap_btn" id="reaction-12537"></div> <script src="https://tistory1.daumcdn.net/tistory_admin/userblog/tistory-fda325030f650f8bb6efdfbc900c54d5af6cf662/static/script/reaction-button-container.min.js"></script><div class="wrap_btn wrap_btn_share"><button type="button" class="btn_post sns_btn btn_share" aria-expanded="false" data-thumbnail-url="https://t1.daumcdn.net/tistory_admin/static/images/openGraph/opengraph.png" data-title="[MONGODB] 표현 GridFS에서 POST 요청에서 데이터 스트림을 저장, MongoDB를, Node.js를" data-description="표현 GridFS에서 POST 요청에서 데이터 스트림을 저장, MongoDB를, Node.js를 내가 먼저 임시 파일로 서버에 어디를 저장하지 않고 GridFS에 직접 이미지를 게시 할 수있는 방법을 알아 내려고 노력하고있다. (. 크롬 내선) I는 파일을 게시 할 우체부를 사용하고 있는데 사용하여 파일이 게시물을 저장 관리 : req.pipe(fs.createWriteStream('./test.png')); readStream가 서버에있는 파일을 생성 할 때 나는 또한 readStream에서 GridFS에 직접 저장할 수입니다. (참조 코드) 나는 POST를 수신하고 기본적으로 단지 savePic.js에게이 전달 다음 파일, saveFromReq.js 있습니다. saveFromReq.js : var e.." data-profile-image="https://t1.daumcdn.net/tistory_admin/static/manage/images/r3/default_L.png" data-profile-name="cnpnote" data-pc-url="https://cnpnote.tistory.com/entry/MONGODB-%ED%91%9C%ED%98%84-GridFS%EC%97%90%EC%84%9C-POST-%EC%9A%94%EC%B2%AD%EC%97%90%EC%84%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%8A%A4%ED%8A%B8%EB%A6%BC%EC%9D%84-%EC%A0%80%EC%9E%A5-MongoDB%EB%A5%BC-Nodejs%EB%A5%BC" data-relative-pc-url="/entry/MONGODB-%ED%91%9C%ED%98%84-GridFS%EC%97%90%EC%84%9C-POST-%EC%9A%94%EC%B2%AD%EC%97%90%EC%84%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%8A%A4%ED%8A%B8%EB%A6%BC%EC%9D%84-%EC%A0%80%EC%9E%A5-MongoDB%EB%A5%BC-Nodejs%EB%A5%BC" data-blog-title="복붙노트"><span class="ico_postbtn ico_share">공유하기</span></button> <div class="layer_post" id="tistorySnsLayer"></div> </div><div class="wrap_btn wrap_btn_etc" data-entry-id="12537" data-entry-visibility="public" data-category-visibility="public"><button type="button" class="btn_post btn_etc2" aria-expanded="false"><span class="ico_postbtn ico_etc">게시글 관리</span></button> <div class="layer_post" id="tistoryEtcLayer"></div> </div></div> <button type="button" class="btn_menu_toolbar btn_subscription #subscribe" data-blog-id="2840920" data-url="https://cnpnote.tistory.com/entry/MONGODB-%ED%91%9C%ED%98%84-GridFS%EC%97%90%EC%84%9C-POST-%EC%9A%94%EC%B2%AD%EC%97%90%EC%84%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%8A%A4%ED%8A%B8%EB%A6%BC%EC%9D%84-%EC%A0%80%EC%9E%A5-MongoDB%EB%A5%BC-Nodejs%EB%A5%BC" data-device="web_pc"><em class="txt_state">구독하기</em><strong class="txt_tool_id">복붙노트</strong><span class="img_common_tistory ico_check_type1"></span></button> <div data-tistory-react-app="SupportButton"></div> </div> <!-- PostListinCategory - START --> <div class="another_category another_category_color_gray"> <h4>'<a href="/category/MONGODB">MONGODB</a>' 카테고리의 다른 글</h4> <table> <tr> <th><a href="/entry/MONGODB-%EB%AA%BD%EA%B5%AC%EC%8A%A4-%EB%AA%A8%EB%8D%B8%EC%97%90%EC%84%9C-%EC%8A%A4%ED%82%A4%EB%A7%88-%ED%8A%B9%EC%84%B1%EC%9D%84-%EB%B0%9B%EA%B3%A0">[MONGODB] 몽구스 모델에서 스키마 특성을 받고</a>  <span>(0)</span></th> <td>2019.12.14</td> </tr> <tr> <th><a href="/entry/MONGODB-MongoDB%EC%9D%98-%EA%B2%80%EC%83%89%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC-%EC%9E%90%EB%8F%99-%EC%99%84%EC%84%B1-%EA%B8%B0%EB%8A%A5%EC%9D%84-%EA%B5%AC%ED%98%84">[MONGODB] MongoDB의 검색을 사용하여 자동 완성 기능을 구현</a>  <span>(0)</span></th> <td>2019.12.14</td> </tr> <tr> <th><a href="/entry/MONGODB-%EC%A7%91%EA%B3%84-%EC%BF%BC%EB%A6%AC%EC%97%90-MongoDB%EC%9D%98-%EC%84%B1%EB%8A%A5">[MONGODB] 집계 쿼리에 MongoDB의 성능</a>  <span>(0)</span></th> <td>2019.12.14</td> </tr> <tr> <th><a href="/entry/MONGODB-MongoDB%EC%9D%98-%EC%9E%90%EB%B0%94-%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B2%84-%EA%B5%AC%EC%84%B1-%EB%A1%9C%EA%B9%85">[MONGODB] MongoDB의 자바 드라이버 구성 로깅</a>  <span>(0)</span></th> <td>2019.12.14</td> </tr> <tr> <th><a href="/entry/MONGODB-MongoDB%EC%9D%98-%EC%BB%AC%EB%A0%89%EC%85%98-%EC%A4%91%EB%B3%B5-%EB%AC%B8%EC%84%9C%EC%9D%98-%EC%82%BD%EC%9E%85%EC%9D%84-%EC%A4%91%EC%A7%80%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95">[MONGODB] MongoDB의 컬렉션 중복 문서의 삽입을 중지하는 방법</a>  <span>(0)</span></th> <td>2019.12.14</td> </tr> </table> </div> <!-- PostListinCategory - END --> </div> <div class="entry-footer"> <div class="actionTrail"> <a href="#tb" onclick=""></a>, <a href="#rp" onclick=""></a> </div> <div data-tistory-react-app="Namecard"></div> </div> </div> </div><!-- entry close --> </article> </div><!-- container close --> <aside role="complementary" id="sidebar"> <div class="container"> <div class="sidebar-inner"> <div class="module module_plugin"> <!-- Adfit_PC - START --> <ins class="kakao_ad_area" style="display:none;" data-ad-unit = "DAN-ubre63wuo3sm" data-ad-width = "160" data-ad-height = "600"></ins> <script type="text/javascript" src="//t1.daumcdn.net/kas/static/ba.min.js" async></script> <!-- Adfit_PC - END --> </div> <!-- 검색 모듈 --> <div class="widget widget-search col-md-3 col-xs-12"> <h3><i class="icon-magnifier icons"></i> Search</h3> <input type="text" name="search" value="" onkeypress="if (event.keyCode == 13) { try { window.location.href = '/search' + '/' + looseURIEncode(document.getElementsByName('search')[0].value); document.getElementsByName('search')[0].value = ''; return false; } catch (e) {} }"/> <input value="검색" type="button" onclick="try { window.location.href = '/search' + '/' + looseURIEncode(document.getElementsByName('search')[0].value); document.getElementsByName('search')[0].value = ''; return false; } catch (e) {}" class="btn btn-default btn-sm"/> </div> <!-- 카테고리 모듈 --> <div class="widget widget-category col-md-3 col-xs-12"> <h3><i class="icon-direction icons"></i> 카테고리</h3> <ul class="tt_category"><li class=""><a href="/category" class="link_tit"> 분류 전체보기 </a> <ul class="category_list"><li class=""><a href="/category/PHP" class="link_item"> PHP </a></li> <li class=""><a href="/category/%EC%8A%A4%ED%81%AC%EB%9E%98%EC%B9%98%203.0" class="link_item"> 스크래치 3.0 </a></li> <li class=""><a href="/category/PYTHON" class="link_item"> PYTHON </a></li> <li class=""><a href="/category/SPRING" class="link_item"> SPRING </a></li> <li class=""><a href="/category/HADOOP" class="link_item"> HADOOP </a></li> <li class=""><a href="/category/SCALA" class="link_item"> SCALA </a></li> <li class=""><a href="/category/MONGODB" class="link_item"> MONGODB </a></li> <li class=""><a href="/category/REDIS" class="link_item"> REDIS </a></li> <li class=""><a href="/category/RUBY-ON-RAILS" class="link_item"> RUBY-ON-RAILS </a></li> <li class=""><a href="/category/SQL" class="link_item"> SQL </a></li> <li class=""><a href="/category/NODEJS" class="link_item"> NODEJS </a></li> <li class=""><a href="/category/JQUERY" class="link_item"> JQUERY </a></li> <li class=""><a href="/category/ANDROID" class="link_item"> ANDROID </a></li> <li class=""><a href="/category/SWIFT" class="link_item"> SWIFT </a></li> <li class=""><a href="/category/HTML" class="link_item"> HTML </a></li> <li class=""><a href="/category/CSS" class="link_item"> CSS </a></li> <li class=""><a href="/category/REACTJS" class="link_item"> REACTJS </a></li> <li class=""><a href="/category/VUEJS" class="link_item"> VUEJS </a></li> <li class=""><a href="/category/WORDPRESS" class="link_item"> WORDPRESS </a></li> <li class=""><a href="/category/ANGULAR" class="link_item"> ANGULAR </a></li> <li class=""><a href="/category/MICROSERVICE" class="link_item"> MICROSERVICE </a></li> <li class=""><a href="/category/DJANGO" class="link_item"> DJANGO </a></li> <li class=""><a href="/category/FLASK" class="link_item"> FLASK </a></li> <li class=""><a href="/category/APACHE" class="link_item"> APACHE </a></li> <li class=""><a href="/category/GO" class="link_item"> GO </a></li> <li class=""><a href="/category/JAVA" class="link_item"> JAVA </a></li> <li class=""><a href="/category/FLUTTER" class="link_item"> FLUTTER </a></li> <li class=""><a href="/category/REACTIVE" class="link_item"> REACTIVE </a></li> <li class=""><a href="/category/SPA" class="link_item"> SPA </a></li> </ul> </li> </ul> </div> <!-- 태그목록 모듈 --> <div class="widget widget-tag col-md-3 col-xs-12"> <h3><i class="icon-tag icons"></i> 태그목록</h3> <ul> <li><a href="/tag/spring" class="cloud1"> spring</a></li> <li><a href="/tag/java" class="cloud2"> java</a></li> <li><a href="/tag/mysql" class="cloud4"> mysql</a></li> <li><a href="/tag/spring-mvc" class="cloud4"> spring-mvc</a></li> <li><a href="/tag/php" class="cloud4"> php</a></li> <li><a href="/tag/HADOOP" class="cloud3"> HADOOP</a></li> <li><a href="/tag/jQuery" class="cloud4"> jQuery</a></li> <li><a href="/tag/PYTHON" class="cloud3"> PYTHON</a></li> <li><a href="/tag/sql" class="cloud2"> sql</a></li> <li><a href="/tag/javascript" class="cloud4"> javascript</a></li> </ul> </div> <!-- 최근 포스트 모듈 --> <div class="widget widget-post col-md-3 col-xs-12"> <h3><i class="icon-list icons"></i> 최근에 올라온 글 </h3> <ul> </ul> </div> </div> </div> </div><!-- container close --> </aside><!-- sidebar close --> <footer role="contentinfo"> <div class="container"> <div class="row"> <div class="col-xs-12 col-sm-12 col-md-12 footer-menu"> <a href="https://cnpnote.tistory.com/tag"><i class="icon-tag icons"></i> </a> <a href="https://cnpnote.tistory.com/rss" onclick="window.open(this.href); return false"><i class="icon-feed icons"></i> </a> </div> <div class="col-xs-12 col-sm-12 col-md-12 footer-copyright text-right"> <a href="https://cnpnote.tistory.com/"> cnpnote</a>'s Blog is powered by <a href="http://daum.net" onclick="window.open(this.href); return false">Daumkakao</a> / Designed by <a href="http://ongal.tistory.com">CEOSEO</a> </div> </div> </div> </footer> <!-- jQuery --> <script src="https://tistory1.daumcdn.net/tistory/2840920/skin/images/jquery-1.11.0.min.js?_version_=1583344392"></script> <div class="#menubar menu_toolbar "> <h2 class="screen_out">티스토리툴바</h2> <div class="btn_tool"><button class="btn_menu_toolbar btn_subscription #subscribe" data-blog-id="2840920" data-url="https://cnpnote.tistory.com" data-device="web_pc"><strong class="txt_tool_id">복붙노트</strong><em class="txt_state">구독하기</em><span class="img_common_tistory ico_check_type1"></span></button></div></div> <div class="#menubar menu_toolbar "></div> <div class="layer_tooltip"> <div class="inner_layer_tooltip"> <p class="desc_g"></p> </div> </div> <iframe id="editEntry" style="position:absolute;width:1px;height:1px;left:-100px;top:-100px" src="//cnpnote.tistory.com/api"></iframe> <!-- DragSearchHandler - START --> <script src="//search1.daumcdn.net/search/statics/common/js/g/search_dragselection.min.js"></script> <!-- DragSearchHandler - END --> <script type="text/javascript">(function($) { $(document).ready(function() { lightbox.options.fadeDuration = 200; lightbox.options.resizeDuration = 200; lightbox.options.wrapAround = false; lightbox.options.albumLabel = "%1 / %2"; }) })(tjQuery);</script> <div style="margin:0; padding:0; border:none; background:none; float:none; clear:none; z-index:0"></div> <script type="text/javascript" src="https://tistory1.daumcdn.net/tistory_admin/userblog/tistory-fda325030f650f8bb6efdfbc900c54d5af6cf662/static/script/common.js"></script> <script type="text/javascript">window.roosevelt_params_queue = window.roosevelt_params_queue || [{channel_id: 'dk', channel_label: '{tistory}'}]</script> <script type="text/javascript" src="//t1.daumcdn.net/midas/rt/dk_bt/roosevelt_dk_bt.js" async="async"></script> <script type="text/javascript" src="https://tistory1.daumcdn.net/tistory_admin/userblog/tistory-fda325030f650f8bb6efdfbc900c54d5af6cf662/static/script/menubar.min.js"></script> <script>window.tiara = {"svcDomain":"user.tistory.com","section":"글뷰","trackPage":"글뷰_보기","page":"글뷰","key":"2840920-12537","customProps":{"userId":"0","blogId":"2840920","entryId":"12537","role":"guest","trackPage":"글뷰_보기","filterTarget":false},"entry":{"entryId":"12537","categoryName":"MONGODB","categoryId":"310891","author":"3264508","image":"","plink":"/entry/MONGODB-%ED%91%9C%ED%98%84-GridFS%EC%97%90%EC%84%9C-POST-%EC%9A%94%EC%B2%AD%EC%97%90%EC%84%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%8A%A4%ED%8A%B8%EB%A6%BC%EC%9D%84-%EC%A0%80%EC%9E%A5-MongoDB%EB%A5%BC-Nodejs%EB%A5%BC","tags":["gridfs","gridfs-stream","javascript","mongodb","node.js"]},"kakaoAppKey":"3e6ddd834b023f24221217e370daed18","appUserId":"null"}</script> <script type="module" src="https://t1.daumcdn.net/tistory_admin/frontend/tiara/v1.0.0/index.js"></script> <script src="https://t1.daumcdn.net/tistory_admin/frontend/tiara/v1.0.0/polyfills-legacy.min.js" nomodule="true" defer="true"></script> <script src="https://t1.daumcdn.net/tistory_admin/frontend/tiara/v1.0.0/index-legacy.js" nomodule="true" defer="true"></script> </body> </html>