Не удается получить изображения из MongoDB с помощью NodeJs - PullRequest
0 голосов
/ 03 июля 2019

На самом деле, я новичок в mongoDB и node.js.Я планирую хранить изображения в mongodb, используя Mongoose для небольшого практического проекта.Прочитав некоторые учебники и документацию, я обнаружил, что mongodb обрабатывает файл изображения, .txt, файл слова так же, как и строку.

Вот что я сделал:

1) При сохранениичасть: моя схема

  const detectResult = new mongoose.Schema({
     camID: String,
     location: [String, String],
     time: String,
     image: Buffer
   });
  const Test = mongoose.model('Result', detectResult);

Я открыл изображение и сохранил его в буфере, вызвав «buffimage». Затем создаю документ для просмотра в базе данных

   const result1 = new Test ({
       camID: 'cam1',
       location: ['12345','12345'],
       time: '12:00',
       image: buffimage
     });

, используя команду для сохранения документаto mongodb

result1.save();

Чтобы проверить правильность буфера в документе, я переписал значение изображения в документе result1 в файл изображения и сохранил в локальной папке.Это успех.

   var filename = "image";
   var buffer = new Buffer.alloc(0);
   buffer = result1.image;
   var fileContent = fs.writeFile(filename, buffer, (err) => {
        if (err) throw err;
        console.log('File Saved');
      });

Можно предположить, что изображение документа правильно сохранено в базе данных.Размер буфера изображения составляет 921600.

2) На извлекаемой части: я также создаю схему, такую ​​же, как схема сохранения части.Затем найдя сохраненный выше документ,

  const imageResult = Test
    .findOne({time : '12:00'}, 'image')

  //rewrite image
  var filename = "image";
  var buffer = new Buffer.alloc(0);
  buffer = imageResult.image;
  console.log(buffer.length);
  var fileContent = fs.writeFile(filename, buffer, (err) => {
    if (err) throw err;
    console.log('File Saved');

Изображение не может быть успешно записано;размер буфера для найденного изображения - 973368, больше, чем исходный.

Я ожидаю, что размер изображения составляет 921600 B, но он всегда больше, поэтому изображение нельзя переписать корректно.Интересно, а то, как я поступаю, может быть правильным или нет?Как я могу получить этот тип изображения из mongodb?

Я также ищу некоторые другие методы, один из которых - сохранение изображения в сервисе хранения, таком как AWS S3, Azure, затем сохранение только URL-адреса этого изображения, поэтомуизображение может быть идеально, но у меня нет ни одной учетной записи для этих облачных сервисов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...