javascript - 如何访问 .pre ('validation' ) Hook 中的数据?

标签 javascript node.js mongoose mongoose-schema

我在 pre('validate') Hook 期间执行操作时遇到问题。我需要进行一些预验证(例如,确保至少填充 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 DB。但我无法检查预验证中的任何属性。

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

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

最佳答案

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

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

关于javascript - 如何访问 .pre ('validation' ) Hook 中的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48714114/

相关文章:

javascript - promise 链接 : Adding an error handler when creating a Promise vs adding to a variable with a promise

node.js - 在 Mongoose 中填充后查询

javascript - 更改 <p> 值 onclick 不起作用

javascript - Vue.js 组件图像空白

javascript - 如果使用 setContent 加载页面,Puppeteer 将不会加载图像

javascript - 如何使用 JavaScript 修复图像透视变形和旋转?

node.js - Npm 链接和共享模块实例

node.js - Mongoose 将 _id 更改为 id

javascript - 如何使用ajax和php登录用户?

使用枚举的 JavaScript 切换大小写