Я запускаю веб-сайт, который работает на сервере nodeJS + mongoDB. Прямо сейчас я реализую систему для хранения некоторых значков (небольших файлов изображений), которые должны быть в базе данных.
С моей точки зрения, больше смысла НЕ использовать GridFS, поскольку это, похоже, предназначено для больших файлов или большого количества файлов. Поскольку каждый файл, который мне нужно сохранить, будет соответствовать максимальному размеру файла BSON, я должен иметь возможность сохранять их непосредственно в обычный документ.
У меня есть 2 вопроса:
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