我在 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/