我无法通过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。一种方式比另一种方式提供更好的性能吗?
答案 0 :(得分:0)
S3将是一个存储图像的好地方..它将有良好的性能..我们有一个应用程序,将图像存储在文件系统中...但它很难扩展...虽然性能很好..
答案 1 :(得分:0)
如果您使用的格式为'jpeg / png'的图像且小于16mb,则可以使用此github存储库,它是一个模块,可帮助轻松地将图像保存到mongodb,而无需GRIDFS的复杂性,但是如果文件大于16mb,则需要使用GRIDFS,
这是github存储库中小于16 mb的图像的链接(也可以很好地与react配合使用)