2014-12-22 2 views
0

나머지 API를 작성하여 일부 데이터를 다운로드 할 수 있습니다. 모든 데이터는 mongodb에 저장되었습니다. 나는 그것을 가능하게 만들기 위해 download 방법으로 무엇을 전달해야할지 모른다. 내가 아무것도 찾을 수 없습니다Node.js는 mongodb에서 다운로드 할 수 있습니다.

router.get('/download/:productId/:username/:token', function (req, res) { 

    var auth = require('../provider/authProvider.js'); 
    var authInst = new auth(); 

    authInst.checkAuth(req.params.username, req.params.token, res, function (err, obj) { 
     if (obj == true) { 
      res.status(200); 
      // here is my problem, what to pass to the download-method 
      res.download(''); 
     } 
    });   
}); 

download 방법에 경로를 통과하는 것보다 :

여기에 내 현재 코드입니다.

누구든지 내 문제를 해결하는 방법을 알고 있습니까?

+0

정적 파일을 다운로드하는 이유는'다운로드 '입니다. send,'res.send (obj)'또는'res.json (obj)'사용하기 – Jordonias

+0

@Jordonias'download' 노드와 동작은 http 스트리밍을 사용합니다. 또는 나는 틀린가? – BendEg

+0

** 다운로드 ** 용어는 다소 혼란 스럽습니다. 내가 이해할 수있는 것은 MongoDB와 CRUD 작업을하고 싶다는 것입니다. 맞습니까? – NarendraSoni

답변

0

Mongoose 환경을 설정하고 config를 입력하고 MongoDB에 연결하는 방법을 알고 있다고 가정합니다. 그렇지 않다면 내 대답 here을 참조하십시오.

이제 MongoDB에 블로그로 문서가 있다고 가정 해 보겠습니다. 그래서 Mongoose ORM을 사용하여 CRUD 작업을 수행 할 수 있도록 Blog 용 모델을 만들어야합니다.

프로젝트에이 모듈을 포함하려면 몽구스 모듈이 필요합니다.

프로젝트 루트 디렉토리에서이 명령을 실행하면 자동으로 몽구스가 다운로드됩니다. 는 NPM 그래서 우리는 CRUD 방법을 쓸 곳의이 BlogController.js라는 별도의 파일을 생성 할 수

BlogModel.js

var mongoose = require("mongoose"); 
var Schema = mongoose.Schema; 
var BlogSchema = new Schema({ 
    "title" : { type: String }, 
    "user_id" : { type: String }, 
    "blog_uri" :{ type: String }, 
    "post_date" : { type : Date, default: Date.now}, 
    "body" : { type: String, default: '' }, 
    "comments" : [ 
        { 'content' : { type: String }, 
         'user_id' : { type: String }, 
         'comment_date'  : { type: Date }, 
         'votes' : [ 
            { 
            'user_id' : { type: String } 
            } 
            ] 
        } 
       ], 
    "hidden" : {type:Boolean, default: false } 
}); 

mongoose.model('Blog', BlogSchema); 

--save 몽구스를 설치합니다.

var mongoose = require('mongoose'); 
var Blog = mongoose.model('Blog'); 
var ObjectId = require('mongoose').Types.ObjectId; 
exports.create = function(req,res){ 
    var blog = new Blog(req.body); 

    blog.save(function(err){ 
     if(err) 
      res.json({message: "Error occured while saving"}); 
     else{ 
      res.redirect('/home'); 
     }  
    }); 
}; 

exports.getAll = function(req,res){ 
    Blog.find(function(err,blogs){ 
     if(err){ 
      res.send(err); 
     }else{ 
      res.json(blogs); 
     } 
    }); 
}; 


exports.get = function(req,res){ 
    var id ; 
    try{ 
     id = new ObjectId(req.params.id); 
     Blog.findById(id,function(err,blog){ 
      if(err){ 
       res.send(err); 
      }else{ 
       res.render('blog.ejs', { 
        blog: blog 
       }); 
      } 
     }); 
    }catch(e){ 
     res.send(404); 
    } 
}; 


exports.update = function(req,res){ 
    var id ; 
    try{ 
     id = new ObjectId(req.params.blog_id); 
     Blog.findById(id,function(err,blog){ 
      if(err){ 
       res.send(err); 
      } 

      blog.save(function(err){ 
       if(err) 
        res.send(err); 
       res.render('blog.ejs', { 
        message: "Blog Updated successfully" 
       }); 
      }); 
     }); 
    }catch(e){ 
     res.send(404); 
    } 
}; 

exports.delete = function(req,res){ 
    var id ; 
    try{ 
     id = new ObjectId(req.params.blog_id); 
     Blog.remove({_id:id},function(err,blog){ 
      if(err){ 
       res.send(err); 
      } 
       res.render('blog.ejs', { 
        message: "Blog deleted successfully" 
       }); 
     }); 
    }catch(e){ 
     res.send(404); 
    } 
}; 

그래서 이것은 몽구스를 사용하는 CRUD와 관련이 있습니다. 나는 프론트 엔드에 템플릿 로직을 넣기 때문에 대개 내 프로젝트에서 res.render (..)를 사용하지 않습니다. 난 res.json (..)을 사용하고 json 데이터를 프론트 엔드로 전달한다. 그러니 계속 시도해보십시오. 나는 당신의 질문에 대답했기를 바랍니다. 보다 나은 예를 보려면 this repo를 참조하십시오. Here 아주 깨끗한 CRUD 구현이 있습니다.

+0

우선, 설명해 주셔서 감사합니다. 내가 몽구스와 모든 것을 Node.js 서버에서 실행하고있다. (매우 훌륭하게 작동한다.) 그래서 그것에 대해 안다. 고맙다. 내 질문은'download' 메소드에 관한 것이었다. 혼란 스럽기 때문에 그 파일 경로는 매개 변수로 허용됩니다. – BendEg

+0

눈치 채지 못했다면 이전 질문에 CRUD 작업을 찾고 있는지 물어 봤습니다. :) 네가 그렇다고 대답 했으므로 나는이 답을 쓰기 위해 계속 나아 갔다. 의견에 응답하거나 질문을 게시 할 때. 모든 사람들이 이해할 수 있도록 분명히 해주시기 바랍니다. 그렇지 않으면 혼란이 일어날 수 있습니다. 괜찮아. 질문을 편집하고 실제로 원하는 것을 설명하는 세부 정보를 제공해주십시오. 전혀 명확하지 않습니다. – NarendraSoni

관련 문제