我尝试将数据保存在猫鼬模式中,但是所需的验证程序失败,错误消息说该值未定义,但之前的日志指出它具有一个值。

我尝试使用新的mongoose.Schema而不是新的Schema,但是效果不佳。

当我删除所需的标签时,它会保存,但它是空的:
{bookingNumber:{_id:5d4b47d7685936130080eb70,__v:0}}

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const BookingNumberSchema = new Schema({
    number: {
        type: Number,
        required: true,
    },
    description: {
        type: String,
        required: true,
    },
});

const BookingNumber = mongoose.model('BookingNumber', BookingNumberSchema);

module.exports = BookingNumber;



function createBookingNumber(req, res){

    console.log(req.body);
    BookingNumber.create(req.body)
        .then(bookingNumber =>{
            let reply = {
                "bookingNumber": bookingNumber
            }
            res.status(200);
            console.log(reply);
            res.send(reply);
        })
        .catch(err =>{
            res.status(400);
            console.log(err);
            res.send(err);
        });
}


在我的app.js中,我使用bodyParser.json并过滤nosql攻击:

app.use(bodyParser.json());

app.use(filter());


邮递员资料:

{
    "bookingNumber": {
        "number": 1,
        "description": "example bookingnumber"
    }
}


回复:

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


console.log:

{ bookingNumber: { number: 1, description: 'example bookingnumber' } }
{ ValidationError: BookingNumber validation failed: description: Path `description` is required., number: Path `number` is required.
        message: 'Path `description` is required.',
        name: 'ValidatorError',
        properties: [Object],
        kind: 'required',
        path: 'description',
        value: undefined,
        reason: undefined,
        [Symbol(mongoose:validatorError)]: true },
     number:


我看起来输入值不会传递给猫鼬,但我找不到原因。

最佳答案

在邮递员中,您发送了数据:

{
   "bookingNumber": {
       "number": 1,
       "description": "example bookingnumber"
   }
}


和您的模式BookingNumber一样,没有像您发送带有嵌套对象的“ bookingNumber”那样的键,猫鼬验证器没有检查“ number”和“ description”,这就是您的请求失败的原因。
 只是像这样发送:

{
   "number": 1,
   "description": "example bookingnumber"
}

10-05 19:00