【问题标题】:Node JS + Mongo DB: ValidationError: User validation failed: username: Path `username` is requiredNode JS + Mongo DB:ValidationError:用户验证失败:用户名:需要路径“用户名”
【发布时间】:2018-03-29 11:16:32
【问题描述】:

当我尝试使用 Mongoose 将新文档(用户)保存/创建到 Mongo DB 时,尽管为所有值提供了正确的 DataType,但我收到以下验证错误:

ValidationError:用户验证失败:用户名:路径username 是必需的。

我是 Node JS 和 Mongo DB 的初学者。因此,我无法理解出了什么问题。

我还添加了以下模块:

  • 快递
  • 蒙古人
  • 猫鼬
  • 正文解析器

详情请见下文:

详细错误:

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

用户架构/模型:

var mongoose = require("mongoose");

var userSchema = new mongoose.Schema({
firstName: {
    type: String,
    required: true
},
lastName: {
    type: String,
    required: true
},
username: {
    type: String,
    unique: true,
    required: true
},
password: {
    type: String,
    required: true
}
});

mongoose.model("User", userSchema, "users");

用户控制器:

var register = function (req, res) {

console.log("Registering User.");

var firstName = req.body.firstname;
var lastName = req.body.lastname;
var userName = req.body.username;
var password = req.body.password;

User
    .create({
        firstName: firstName,
        lastName: lastName,
        userName: userName,
        password: password
    }, function (err, user) {
        if (err) {
            console.log("Error creating User: ", err);
            res
                .status(400)
                .json(err)
        } else {
            console.log("User Created: ", user);
            res
                .status(201)
                .json(user)
        }
    })
};

我只是不明白,为什么我会收到此验证错误。 任何人都可以指导我完成这个。感谢您的帮助。

【问题讨论】:

  • 属性名称区分大小写。您传递的是“用户名”而不是“用户名”。
  • 天啊……真是个愚蠢的错误。非常感谢。

标签: node.js mongodb express mongoose


【解决方案1】:

你打错了:

User
    .create({
        firstName: firstName,
        lastName: lastName,
        username: userName, // the property is "username" in model
        password: password
    }, function (err, user) {
        if (err) {
            console.log("Error creating User: ", err);
            res
                .status(400)
                .json(err)
        } else {
            console.log("User Created: ", user);
            res
            .status(201)
            .json(user)
        }
    })
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2021-10-07
    • 2020-11-26
    • 2019-11-30
    • 2022-01-21
    相关资源
    最近更新 更多