当我尝试发送POST请求时,我的节点休息API突然停止工作。它一遍又一遍地显示“无法读取未定义的属性0” 。我正在使用Amazon S3进行图像存储。这是我在控制器中创建产品的代码:
exports.cars_create = (req, res, next) => {
let imagebody = req.body;
imagebody.carImage = req.files[0].location;
imagebody._id = mongoose.Types.ObjectId();
const car = new Car(imagebody);
car
.save()
.then(result => {
console.log(result, "Car");
res.status(200).json(result);
})
.catch(err => {
console.log(err);
res.status(500).json({
error: err
});
});
};
这是我的multer中间件:
exports.multerFunction = (direct) => {
aws.config.update({
signatureVersion: 'v4',
secretAccessKey:'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
accessKeyId: 'xxxxxxxxxxxxxxxxx',
region: 'us-east-1'
})
var s3 = new aws.S3()
var upload = multer({
storage: multerS3({
s3: s3,
acl: 'public-read',
bucket: 'onexxxxxxxxx',
key: function (req, file, cb) {
cb(null, Date.now()+file.originalname.replace(/\s+/g, '-'));
}
})
})
return upload
}
路由器代码:
router.post("/", uploadMW.multerFunction('/cars').any('carImage'), CarsController.cars_create);
这一切一直正常工作到最后一天,现在我无法确定POST请求出了什么问题。
答案 0 :(得分:0)
由于未获取图像而发生错误。确保您要发送的图像,该图像的键名正确以及来自前端的数据是表单数据。