хорошо, так что спустя почти неделю я нашел решение.который я искал.я пытался вернуть пользователю отображаемое изображение в виде URL, который будет отдельной конечной точкой для нашего API.так что вы можете легко получить изображение через этот URL.
, поэтому я создал маршрут для целей аутентификации, в котором я получаю полный URL-адрес из запроса, также содержащего имя файла.метод аутентификации обрабатывает систему аутентификации, которая аутентифицирует пользователя и затем передает идентификатор пользователя в метод downloadimage вместе с полным URL-адресом, который просто запросит базу данных для пользователя, и назначит свойству dp (display picture) URL-адрес дляизображение, которое будет иметь полную конечную точку, а также имя файла.я также прикрепил функцию, которая обрабатывает URL изображения позже.
async function downloadImage(id, fullUrl) {
let comUrl;
let user = await User.findById(id).select('-hash');
// console.log(user);
if (user.dp) {
comUrl = fullUrl + user.dp
}
function authenticate(req, res, next) {
var fullUrl = req.protocol + '://' + req.get('host');
let imageurl = await downloadImage(user.id, fullUrl);
if (imageurl) {
console.log(imageurl)
userWithoutHash.dp = imageurl;
}
}
router.get('/file/:filename', (req, res) => {
gfs.model.readById(new mongoose.Types.ObjectId(req.params.filename), (err, file) => {
console.log(file)
// Check if file
if (!file || file.length === 0) {
return res.status(404) .json({
err: 'No file exists'
});
}
const { Readable } = require('stream');
// Check if image
const stream = new Readable();
stream.push(file);
stream.push(null);
stream.pipe(res);
});
});
вывод: будет так
{ "dp": "http://localhost:4000/file/5cc0905839355d013c040794"}
Я надеюсь, я отвечу на вопрос выше, если возникла путаница илиНужна помощь с этим, дайте мне знать спасибо!