mongodb Mongoose ValidatorError,即使已提供字段且字段为非空

8fsztsew  于 2022-11-03  发布在  Go
关注(0)|答案(2)|浏览(127)

我在尝试使用我的API添加新用户时遇到了一个“有趣”的问题......即使提交了必填字段,我还是收到了以下错误。我真的不知道为什么。我已经添加了代码的相关部分。谢谢。

$ curl -v http://localhost:3000/api/users --data "{ 'user_name':'xsa', 'email':'foo@bar.baz' }"

错误:

{"errors":{"email":{"message":"Path `email` is required.","name":"ValidatorError","properties":{"message":"Path `{PATH}` is required.","type":"required","path":"email"},"kind":"required","path":"email","$isValidatorError":true}},"_message":"User validation failed","message":"User validation failed: email: Path `email` is required.","name":"ValidationError"}

models/user.js

[...]

user_name: {
    type: String,
    lowercase: true,
    required: true,
    index: {
      unique: true
    },
    trim: true,
    min: 3,
    max: 8
  },
  email: {
    type: String,
    lowercase: true,
    required: true
  },

[...]

routes/user.js

router.post('/users', (req, res, err) => {
  var user = new User(req.body);

  user.save()
    .catch((err) => {
      res.send(err);
    });
});
j8ag8udp

j8ag8udp1#

你有这个:

var user = new User(req.body);

更改为:

var user = new User();
user.name - req.body.name;
user.email = req.body.email;

编辑:HTML表单如下:

<div>

    <form method="post" action="/users/save">

        <div>
            <label>Name</label>
            <input type='text' required name="userName"/>
        </div>

        <div>
            <label>Email</label>
            <input type='text' required name="email"/>
        </div>

    <input type="submit" class="submit btn btn-primary" value="Save">

    </form>
</div>

当用户按下提交按钮时,您请求正文将被整齐地发送到您路由器,您将有请求正文,用户名和req.body.email等着您
我删除了很多CSS,使其更容易阅读。根据需要应用您自己的样式。

p1iqtdky

p1iqtdky2#

在html页面上获取数据的表单中有名称标记。在键入这些名称标记时不应留下任何空格。同时,此处的命名法应与模型中的命名法相同。
因为一个我没有注意到的空字符,我损失了半个小时。

相关问题