получить файлы по его идентификатору или любому из его атрибутов не работает, не
знаю почему перепробовал все решения
const Files = require('../../models/GALLERY');
const conn = mongoose.connection;
Grid.mongo = mongoose.mongo;
let gfs;
conn.once("open", () => {
gfs = Grid(conn.db);
router.get('/home', (req, res) => {
Files.find()
.exec()
.then(files => {
let uploadedFiles = files.map(file => ({
file_name: file.name,
file_id:file.doc_id,
file_type: file.type,
file_link: `http://${req.headers.host}/v1/bucket/download?document_id=${file.doc_id}`
}));
res.json({
success: true,
uploadedFiles
})
})
.catch(err => {
logger.error(`[*] Error, while getting all uploaded file, with error: ${err}`);
res.status(400).send({
message: `Error, while getting all uploaded file, with error: ${err}`
});
});
});
router.get('/bucket/download/:id', (req, res) => {
const id=req.params.id
gfs.findOne({_id: id }, (err, file) => {
if (!file) {
return res.status(404).send({
message: 'File was not found'
});
}
let data = [];
let readstream = gfs.createReadStream({
filename: file.filename
});
readstream.on('data', (chunk) => {
data.push(chunk);
});
readstream.on('end', () => {
data = Buffer.concat(data);
let type = fileType(data);
res.writeHead(200, {
'Content-Type': type.mime,
'Content-disposition': 'attachment; filename=' + file.filename + '.' + type.ext,
'Content-Length': file.length
});
res.end(data);
});
readstream.on('error', (err) => {
//logger.error(`[*] Error, while downloading a file, with error: ${err}`);
res.status(400).send({
message: `Error, while downloading a file, with error: ${err}`
});
});
});
});
это модель для (ГАЛЕРЕИ)
const mongoose = require('mongoose');
const GALLERYSchema = new mongoose.Schema({
doc_id: {
type: String
},
length : {
type: Number
},
name: {
type: String
},
type: {
type: String
}
});
module.exports = mongoose.model('File', GALLERYSchema);
всегда идет в часть (res.status (400) .send ({
сообщение: Error, while downloading a file, with error: ${err}
)
или файл кустов не найден
если кто-то может помочь мне с этим или дать мне другой способ получить файл (изображение)
чтобы показать или даже bas64 это было бы здорово