【问题标题】:How do I access the data in the .pre('validation') hook?如何访问 .pre('validation') 挂钩中的数据?
【发布时间】:2018-02-10 15:26:53
【问题描述】:

我在 pre('validate') 挂钩期间执行操作时遇到问题。我需要进行一些预验证(例如,确保填充 2 个不同字段中的至少一个,但不一定同时填充)。

const AccessorySchema = new Schema({
    accessory: {
        type: String,
        required: true,
    },
    category: {
        type: String,
        required: true,
        enum: [
            'Offense',
            'Defence',
            'Miscellaneous'
        ]
    },
    space: {
        type: Number,
        required: true,
        validate: {
            validator: Number.isInteger,
            message: 'Space must be an integer'
        }
    },
    priceFixed: {
        type: Number,
        required: false,
        validate: {
            validator: Number.isInteger,
            message: 'Fixed Price must be an integer'
        }
    },
    priceMultiplier: {
        type: [Schema.Types.Mixed],
        required: false
    },
    weightFixed: {
        type: Number,
        required: false,
        validate: {
            validator: Number.isInteger,
            message: 'Fixed Weight must be an integer'
        }
    },
    weightMultiplier: {
        type: [Schema.Types.Mixed],
        required: false
    },
    vehicles: {
        type: [String],
        required: true,
        enum: ["car","cycle"]
    }
});

AccessorySchema.pre('validate', (next) => {
    console.log(this);
    next();
});

然后我将这个对象发送给它:

{
    accessory: "some name",
    category: "Miscellaneous",
    priceMultiplier: [3,5],
    weightMultiplier:  [3,5],
    space: 0,
    vehicles: ["car"]
}

这会记录 {} 并填充 mongo 数据库。但我无法检查预验证中的任何属性。

mongoose版本是^4.7.7,nodejs 6.10.2,mongodb版本是3.2.9

如何访问预验证挂钩中的数据?

【问题讨论】:

    标签: javascript node.js mongoose mongoose-schema


    【解决方案1】:

    不要使用箭头函数,它不绑定上下文。 将您的代码更改为以下

    AccessorySchema.pre('validate', function(next){
        console.log(this);
        next();
    });
    

    【讨论】:

      猜你喜欢
      • 2022-01-02
      • 2021-05-17
      • 2015-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-15
      • 1970-01-01
      • 2013-06-26
      相关资源
      最近更新 更多