【问题标题】:Mongoose Path "." is required - problem with PostmanMocking?猫鼬路径“。”是必需的 - PostmanMocking 有问题吗?
【发布时间】:2020-05-06 18:35:25
【问题描述】:

我正在测试我的 mongoose(用于 MongoDB)架构,但遇到了验证问题。发出 POST 动词后,我收到错误消息:

    "message": {
        "errors": {
            "number": {
                "message": "Path `number` is required.",
                "name": "ValidatorError",
                "properties": {
                    "message": "Path `number` is required.",
                    "type": "required",
                    "path": "number"
                },
                "kind": "required",
                "path": "number"
            }
        },
        "_message": "eventArrayModel validation failed",
        "message": "eventArrayModel validation failed: number: Path `number` is required.",
        "name": "ValidationError"
    }

这是我在 Postman 中模拟的 json: JSON mocked file

{
    "arrayName": "displayedEvents",
    "number": "4"
}

这是我的猫鼬模式:

  const mongoose = require("mongoose");

const  eventSchema =  new mongoose.Schema({
    title: {
        type: String,
    //    required: true,
    },
    start: {
        type: Date,
     //   required: true,
    },
    end: {
        type: Date,
     //   required: true,
    },
    allDay: {type: Boolean, default: true},
    resource: {
        type: String,
      //  required: true,
    },
});

const eventArrayModel = mongoose.model("eventArrayModel", {
    arrayName: {
        type: String,
        required: true,
    },
   array: {type: [eventSchema]} ,
   number: {
        type: Number,
        required: true,
    }
});

module.exports = eventArrayModel;

还有获取路由器:

router.get('/',  async (req,res)=> {
try{
    const posts = await eventArrayModel.find();
    res.json(posts);

}catch(err){
    res.json({message: err});
}

});

我看不出这段代码有什么问题。没有数字字段它可以正常工作。

【问题讨论】:

    标签: mongodb mongoose postman


    【解决方案1】:

    好的,我找到了,这部分代码

    router.post('/', async(req,res)=>{
      const post = new eventArrayModel({
          arrayName: req.body.arrayName
      });
      try {
          const savedPost = await post.save();
          res.json(savedPost);
      }catch(err){
          res.json({message: err});
      }
    
    });
    

    应该看起来更像这样:

    router.post('/', async(req,res)=>{
      const post = new eventArrayModel({
          arrayName: req.body.arrayName,
          array: req.body.array,
          myNumber: req.body.myNumber
      });
      try {
          const savedPost = await post.save();
          res.json(savedPost);
      }catch(err){
          res.json({message: err});
      }
    
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-27
      • 2017-02-17
      • 1970-01-01
      • 2016-09-11
      • 1970-01-01
      • 1970-01-01
      • 2016-10-30
      • 1970-01-01
      相关资源
      最近更新 更多