图片未上传到Node.js中的数据库

时间:2018-08-09 05:57:24

标签: javascript node.js express ecmascript-6 mono

我想使用put方法编辑图像,但是当我给出路径时,它显示'filename'未定义。图像更新,但是当我跳过编辑图像时,它显示了我文件名未定义

app.put('/about_update/:id',upload.single('avatar'),(req,res,next)=>{
console.log(res.file);
aboutus.findById(req.params.id,(err,data2)=>{   
    if(err){
       return res.send(err.message, '404 error from server');

        }
    data2.personName = req.body.personName;
    data2.designation = req.body.designation;
    data2.content = req.body.content;
    data2.avatar = req.file.filename;
    data2.save(function(err){
        if(err){
            res.send(err.message, 'err from server');
        }else{
            res.json({message:'updated successfully'});
        }       
    })

})

})

错误:

events.js:183       投掷者//未处理的“错误”事件       ^

TypeError:无法读取未定义的属性“文件名”     在aboutus.findById(/var/www/html/gis-react-version/api/server.js:147:33)     在/var/www/html/gis-react-version/api/node_modules/mongoose/lib/model.js:4451:16     在process.nextTick(/var/www/html/gis-react-version/api/node_modules/mongoose/lib/query.js:2476:28)

2 个答案:

答案 0 :(得分:1)

    if (req.file) {
       data.personName = req.body.personName;
       data.designation = req.body.designation;
       data.content = req.body.content;
       data.avatar = req.file.filename;
    }else{
       data.personName = req.body.personName;
       data.designation = req.body.designation;
       data.content = req.body.content;
   }
aboutus.findByIdAndUpdate(req.params.id, {
            $set: {data}
   }).then(() => {
        res.json({message:'updated successfully'});
     }, (err) => {
         res.json({message:'err from server'});
})

答案 1 :(得分:0)

body-parser处理JSON和urlencoded表单提交,而不是多部分提交(如果您要上传图片,情况就是如此)。 因此,它显示了这个问题。 为了使用它,您只需使用multer软件包。