Я пытаюсь сохранить изображение, используя node и mongodb. Я использую реагирование в веб-интерфейсе. Я пытался использовать multer, но выдает ошибку, говорящую «TypeError: путь должен быть строкой или буфером». Есть ли другой способсохранить изображение с использованием узла и mongodb
//server.js
const multer = require("multer");
const storage = multer.diskStorage({
destination: function (req, res, cb) {
cb(null, 'uploads/')
}
});
const upload = multer({
storage: storage
});
router.route('/imageCard/add').post(upload.single('file'), function (req, res)
{
let imageDetails=new ImageCard();
imageDetails.name=req.body.name;
imageDetails.imgSource= fs.readFileSync(req.body.imgSource);
imageDetails.price=req.body.price;
imageDetails.size=req.body.size;
imageDetails.save().then(details=>
{
res.status(200).json('Added');
}).catch(err=>{
result.status(400).send('Failed to Add');
})
});
//(model )
import mongoose from 'mongoose';
const Schema = mongoose.Schema;
let imageCard=new Schema({
name:{
type:String
},
imgSource:{
type:Buffer
},
size:{
type:String
},
price:{
type:String
}
});
export default mongoose.model('ImageCard', imageCard);
//react file
onChange(e) {
this.state.file = e.target.files[0];
}
onsubmit() {
console.log('on submit');
const newDoc = {
name: document.getElementById('name').value,
price: document.getElementById('price').value,
size: document.getElementById('size').value,
imgSource:this.state.file
}
console.log(newDoc.imgSource);
axios.post(`http://localhost:4000/imageCard/add`,newDoc).then(res=>{
console.log(res.data);
}).catch(err=>{
console.log(err);
});
}
Если я использую код ниже, то выдает эту ошибку: TypeError: Невозможно прочитать свойство 'путь' из неопределенного
imageDetails.imgSource= fs.readFileSync(req.file.path);
Я не получаюЗначения imgSource в файле server.js, он показывает нулевые значения.