使用express nodejs将图像发布到mongodb

时间:2018-12-26 11:46:35

标签: node.js

我正在尝试使用express nodejs发布到mongodb,这是添加路由的代码:

router.post('/add', (req, res) => {

  const validating = userValidating(req.body);
  if (validating.error) {
    res.status(400).send(validating.error.details);
  } else {
    var path = "images/"+req.file.image;
    res.send(path);
    var image = req.files.image;
    fileName = uuidv1();
    const user = new User({
      _id: new mongoose.Types.ObjectId(),
      image: req.file.image,
      title: req.body.title
    });

    const v = user.validateSync();

    if (v)
      res.status(400).send('somthing wrong');

    user.save()
      .then(result => {

        res.send('You have added a new user');

        image.mv(`./public/images/${fileName}.png`, function(err) {
          if (err)
            return res.status(500).send(err);
          res.send('File uploaded!');
        });
        console.log(result);
      })
      .catch(err => {

        res.status(401).send(err);
        console.log(err);
      });
  }
});

这是我上面使用的验证功能:

function userValidating(user) {
  const userSchema = {
    'image': Joi.string().required(),
    'title': Joi.string().required()
  }
  return Joi.validate(user, userSchema);
}

当我在邮递员中尝试使用如下形式的数据时:

enter image description here

您可以看到,即使我将图像更改为req.body.image而不是req.file.image,我仍然需要此图像错误

我也尝试在邮递员中使用Body raw而不是form-data并这样写json:

{
    "image": "uuu",
    "title": "uuuu"
}

效果很好

代码有什么问题?

0 个答案:

没有答案