通过Node.js将图像插入MongoDB

时间:2015-05-07 18:14:02

标签: node.js mongodb mongoose media

我无法通过node.js将图像插入MongoDB。我的代码如下:

var express  = require('express'),
mongoose = require('mongoose'),
fs = require('fs'),
Schema = mongoose.Schema;
app  = express(),
port = process.env.PORT || 3000;

var imagePath = '~\images\image1.png';

mongoose.connect('mongodb://localhost/test');
var db = mongoose.connection;

var contentSchema = new Schema({
    _id: Schema.ObjectId,
    date: {type: Date, default: Date.now},
    user_ip: Number,
    likes: Number,
    reports: Number,
    media: {data: Buffer, contentType: String}
})

var Content = mongoose.model('content', contentSchema);

var media = new Content({
    user_ip:12345,
    likes: 1400,
    reports: 0,
    media: fs.readFileSync(imagePath)
});

media.save(function(err,media){
    if (err) return console.error(err);
    console.dir(media);
});

我相信我所缺少的是我如何上传媒体,即fs.readFileSync(imgpath)。这是常见的方法,还是你推荐的更好的方法?

或者,我愿意将图像存储在我的服务器上的文件夹中,只需将链接到图像的URL添加到我的数据库中的JSON对象即可。这样,我不必担心实际存储任何媒体到Mongo。一种方式比另一种方式提供更好的性能吗?

2 个答案:

答案 0 :(得分:0)

S3将是一个存储图像的好地方..它将有良好的性能..我们有一个应用程序,将图像存储在文件系统中...但它很难扩展...虽然性能很好..

答案 1 :(得分:0)

如果您使用的格式为'jpeg / png'的图像且小于16mb,则可以使用此github存储库,它是一个模块,可帮助轻松地将图像保存到mongodb,而无需GRIDFS的复杂性,但是如果文件大于16mb,则需要使用GRIDFS,

这是github存储库中小于16 mb的图像的链接(也可以很好地与react配合使用)

https://github.com/saran-surya/Mongo-Image-Converter