Я использую 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 ().
Любые подсказки приветствуются.