Я пытаюсь прочитать файл из моей базы данных, и по какой-то причине он возвращает один и тот же файл каждый раз, не учитывая имя файла, которое я пытаюсь получить.
НАЗАД:
router.post('/', (req, res) => {
mongoose
.connect('mongodb://dbname.mlab.com:12345/db', {
auth:
{
user: 'user',
password: 'pw'
}
})
.then(() => {
console.log('connection successful')
var gridfs = require('mongoose-gridfs')({
collection:'fs',
model:'files',
mongooseConnection: mongoose.connection
});
Attachment = gridfs.model;
// large file example
var stream = Attachment.readByFileName(req.body.imageName);
console.log(stream)
stream.on('data', (image) => {
base64data += image.toString('base64'); // converting buffer to base64 string
base64data = base64data.replace('undefined', '');
console.log(base64data)
});
stream.on('close', () => {
res.send(base64data)
});
})
.catch((err) => console.error(err));
})
ПЕРЕДНЯЯ ЧАСТЬ:
getImageBuffer = (imageName) => {
this.forceUpdate();
console.log('this is the image im fatching', imageName)
axios
.post('https://myserver.com/readCarImg', {
imageName: imageName
})
.then((res) => {
this.setState({
imageBuffer:`data:image/jpg;base64,${res.data}`
})
})
.catch((e) => {
console.log('there was problem getting image buffer', e)
})
}
УДАЛЕНИЕ ИЗОБРАЖЕНИЯ ИЗ СОСТОЯНИЯ:
showModalMarker = () => {
this.setState({
imageBuffer: undefined
})
}
ПРИМЕЧАНИЕ. Я регистрируюсь imageName
чтобы быть уверенным, что я получаю разные имена каждый раз, и я.А также я удаляю строку Image из состояния перед каждым новым вызовом, чтобы убедиться, что она очищена.И я регистрирую ответ от сервера и могу подтвердить, что один и тот же буфер возвращается каждый раз.Я использую gridfs
для хранения изображений в моем моноблоке, если это имеет какое-то значение