【发布时间】: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