Получить данные из MongoDB с помощью GridFS - PullRequest
0 голосов
/ 01 августа 2020

Я использую GridFS с mon goose и Nodejs.

Я пытаюсь получить данные с помощью следующего кода, который отлично работает:

const getPhoto = (req: Request, res: Response) => {
  let photoID = new mongoose.Types.ObjectId(req.params.photoID);
  const bucket = new mongoose.mongo.GridFSBucket(mongoose.connection.db, {
    bucketName: 'photos',
  });
  const downloadStream = bucket.openDownloadStream(photoID);
  downloadStream.on('data', (chunk) => { res.write(chunk); });
  downloadStream.on('error', () => { res.sendStatus(404); });
  downloadStream.on('end', () => { res.end(); });
};

Я сказал, что он работает хорошо, потому что когда я использую Postman, я могу видеть картинку. Прикрепил пример:

введите описание изображения здесь

Как я могу распечатать изображение точно так же из javascript внешнего интерфейса?

В настоящее время я делаю:

const getFile = async (url: string, fileId: string) => {
  const res = await fetch(`${url}/${fileId}`);
  const json = await res.json();
  return json;
};

Для тестирования :

const response = getFile('http://localhost:5000/api/uploads/', '5f25bbd0bed2cf162a79768e');

Но как с ответом бороться не знаю. Возможно, мне даже не понадобится делать res. json ().

Любые подсказки приветствуются.

...