[英]MongoDB query from node.js (express-coffeescript-mongodb)
[英]Node.js express download from mongodb
我想编写一个rest api,通过它我可以下载一些数据。 所有数据都存储在mongodb中。 我不知道将什么传递给download
方法,以使其成为可能。
这是我当前的代码:
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
方法之外,我找不到其他任何东西。
有没有人有一个想法如何解决我的问题?
我假设您知道如何设置mongoose环境,进行配置,连接到MongoDB。 如果没有,请参阅我的答案在这里 。
现在假设我们在MongoDB中有一个文档作为Blog。 因此,我们需要为Blog创建一个模型,以便可以使用Mongoose ORM进行CRUD操作。
您需要将猫鼬模块包含在您的项目中。
因此,从您的项目根目录运行此命令,它将自动为您下载猫鼬。 npm安装猫鼬--save
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);
因此,让我们创建一个名为BlogController.js的单独文件,在其中我们将为CRUD编写方法。
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数据传递到前端。 因此,请继续尝试。 我希望我回答了你的问题。 您可以参考此仓库,以获取更好的示例。 在这里,我得到了一个非常干净的CRUD实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.