我运行的网站后端是基于nodeJS + mongoDB的。现在,我正在实现一个系统来存储一些图标(小图片文件),这些图标需要保存在数据库中。
据我了解,不使用GridFS更合理,因为它似乎是为大文件或大量文件而设计的。由于我需要保存的每个文件都明显小于BSON最大文件大小,所以我应该能够将它们直接保存到常规文档中。
我有两个问题:
1)我的推理正确吗?将图像文件保存在常规mongo集合中,而不是使用GridFS,可以吗?这里是否有我没有考虑到的任何事情?
2)如果我的思路正确,我该如何做?我能否执行以下操作:
//assume 'things' is a mongoDB collection created properly using node-mongodb-driver
fs.readFile(pathToIconImage, function(err,image){
things.insert({'image':image}, function(err,doc){
if(err) console.log('you have an error! ' + err);
});
});
我猜测有更好的方法,因为mongoDB使用BSON格式,而这里我试图在发送到数据库之前将文件保存为JSON。我也不知道这段代码是否可行(尚未尝试)。
更新-新问题
如果我有一个储存在集合中的文档,它保存了三个信息:1)名称,2)日期,和3)图像文件(上面的图标),我想将此文档发送给客户端以便显示全部三个信息,是否可能?如果不行,我想我需要使用GridFS并将文件ID保存在图像原位置。 有什么想法/建议吗?
最好的问候,感谢任何回复,
Sami