即使提供了字段且非空,也会出现Mongoose ValidatorError

时间:2018-01-29 14:53:33

标签: node.js mongodb express mongoose

我得到了一个有趣的"尝试使用我的API添加新用户时出现问题...即使提交了必填字段,我也会收到以下错误。我无法弄清楚原因。我已经添加了代码的相关部分。感谢。

{"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"}

错误:

[...]

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

[...]

模型/ user.js的

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

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

路由/ user.js的

buildscript {

    repositories {
        google() // Speficically this entry
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
    }
}

1 个答案:

答案 0 :(得分:0)

你有这个:

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

更改为:

<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>

编辑:这是HTML表单:

public void run(ExampleConfiguration configuration, Environment environment) throws Exception {

    Stream<ConnectorFactory> connectors = configuration.getServerFactory() instanceof DefaultServerFactory
            ? ((DefaultServerFactory)configuration.getServerFactory()).getApplicationConnectors().stream()
            : Stream.of((SimpleServerFactory)configuration.getServerFactory()).map(SimpleServerFactory::getConnector);

    int port = connectors.filter(connector -> connector.getClass().isAssignableFrom(HttpConnectorFactory.class))
            .map(connector -> (HttpConnectorFactory) connector)
            .mapToInt(HttpConnectorFactory::getPort)
            .findFirst()
            .orElseThrow(IllegalStateException::new);
}

当用户按下提交按钮时,您的req.body将整齐地发送到您的路由器。你将有req.body.userName和req.body.email等你。

我删除了很多CSS以便于阅读。根据需要应用您自己的样式。