Хранение некоторых небольших (файлов размером менее 1 МБ )с помощью MongoDB в NodeJS БЕЗ GridFS

Я запускаю веб-сайт, который работает на бэкэнде nodeJS + mongoDB. Прямо сейчас я реализую систему для хранения некоторых значков (небольших файлов изображений ), которые должны быть в базе данных.

Насколько я понимаю, более разумно НЕ использовать GridFS, поскольку она, похоже, предназначена либо для больших файлов, либо для большого количества файлов. Поскольку каждый файл, который мне нужно сохранить, будет значительно меньше максимального размера файла BSON, я смогу сохранить их непосредственно в обычный документ.

У меня 2 вопроса:

1 )Верны ли мои рассуждения? Можно ли сохранять файлы изображений в обычной коллекции монго, а не в 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 и сохранить идентификатор файла вместо самого изображения. Мысли/предложения?

С наилучшими пожеланиями, и спасибо за любые ответы,
Сами

22
задан thisissami 11 July 2012 в 22:28
поделиться