【问题标题】:request body undefined, mongoose validation error on nested properties请求正文未定义,嵌套属性上的猫鼬验证错误
【发布时间】:2021-12-10 08:01:25
【问题描述】:

我正在使用 nodejs/express/mongoose

我的模特:

const TodoSchema = new mongoose.Schema({
name: { type: String, required: ['Name is required'] },
},

});

控制器:

async function createTask(req, res) {
try {
    const task = new Todo({ name: req.body });
    console.log(req);
    console.log('Name check: ', req.name);
    const result = await task.save();
    console.log('check: ', task, result);
    // res.send('Task created: ', result);
    res.json({ msg: 'Task created', item: result });
} catch (error) {
    console.log('Task creation error:', error);
    return res.json({
        msg: error,
    });
}

}

我在邮递员中的回复:

    "msg": {
    "errors": {
        "name": {
            "name": "ValidatorError",
            "message": "Name is required",
            "properties": {
                "message": "Name is required",
                "type": "required",
                "path": "name"
            },
            "kind": "required",
            "path": "name"
        }
    },
    "_message": "Todo validation failed",
    "name": "ValidationError",
    "message": "Todo validation failed: name: Name is required"
}

}

对于我的日志,req.name 未定义,req.body.

我看到了 mongoose 验证的文档和 type 关键字,并尝试了这些建议,但没有任何帮助。我的 post 端点怎么了?

【问题讨论】:

  • 你能把所有代码都加进去吗?
  • 很难说,但您是否在请求标头中设置了内容类型?
  • 任何答案都解决了您的问题吗?

标签: node.js express validation mongoose post


【解决方案1】:

当您在猫鼬模式中使用 required 时出现错误,您错过了 true 参数。 这是我的例子 =>


const mongoose = require("mongoose");

const TaskSchema = new mongoose.Schema({
  name: {
    type: String,
    required: [true, "You Must Provide name"],
    trim: true,
    maxlength: [23, "Maximum twenty characters"],
    minlength: [5, "Minimum four characters"],
  }
});

module.exports = mongoose.model("Task", TaskSchema);

【讨论】:

    【解决方案2】:

    也许,你只是不添加中间件来表达。

    app.use(express.json());
    app.use(express.urlencoded({ extended: false }))

    【讨论】:

      猜你喜欢
      • 2015-01-06
      • 1970-01-01
      • 1970-01-01
      • 2014-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-13
      相关资源
      最近更新 更多