我正在学习如何使用GridFS (MongoDB), Mongoose和Express。我的目标是接收一个POST
与表单数据,包括SVG和JSON。我有以下模型:
var postSchema = mongoose.Schema({
title: String,
img: { data: Buffer, contentType: String }
})
var Post = mongoose.model('Post', postSchema);
我认为使用GridFS流库是权宜之计。以下是我认为应该发生的事情:
//What to do here?
app.post('/upload', function(req, res, next) {
var post = new Post;
post.img.data = fs.readFileSync(req.files.image);//Can I do this?
post.img.contentType = 'image/svg+xml';
post.title = req.title;
var writestream = gfs.createWriteStream([options]);
fs.createReadStream('/some/path').pipe(writestream);
post.save();
});
这就是我被困住的地方。我需要从POST
读取图像(我现在专注于SVG),以某种方式将其连接到我的模型,然后将此模型保存并将图像保存到gridFS。我的思路对吗?
我想出了一个更好的方法。我使用的SVG图像都在16MB以下(相差很多)。SVG只是一个字符串,所以它很容易提供服务。重要的是要记住,还要提供适当的内容头(img/svg+xml)。
<<p> Mongoose.js模式/strong>var svgPostSchema = mongoose.Schema({
img: { data: String, contentType: String }
})