使用 Multer 清空图像字段

Empty image field with Multer

我正在使用 Multer 并以 multipart/form-data 的形式发送数据。即使图像字段为空,我也想保存新的食物对象,但是当我使用没有图像的 POSTMAN 发送数据时 req.files.image.name 它向我发送了一个错误:

TypeError: 无法读取未定义

的属性 'name'
router.post('/food/add', function (req, res, next) {
    var food = new Food({
        name: req.body.name,
        image: req.files.image.name,
        category: req.body.category,
    });

    food.save(function(err, food){
        if (err){
            return next(err);
        }
        res.json({food: food, message: '¡Wohoo! Food added.'});
    });
});

如何解决此错误并保存图像字段为空的对象?

只需使用 if 语句。

var food = new Food({
    name: req.body.name,
    category: req.body.category,
});
if (typeof req.files.image !== "undefined") {
    food.image = req.files.image.name;
}

或者

var food = new Food({
    name: req.body.name,
    image: (typeof req.files.image !== "undefined") ? req.files.image.name : '',
    category: req.body.category,
});