例如,我有一个如下对象:
{{1}}
我不知道对象属性(foo,bar,baz)的名称,但我希望每个属性只能是String类型,因此" baz"将被拒绝/抛出错误。
这些数据的模型架构会是什么样子?我可以看到这样做的唯一方法是使用类似于整个对象/模型的混合类型的自定义类型。
答案 0 :(得分:0)
"外卡"没有选项。据我所知,架构路径验证。
您可以做的是定义strict: false
架构并定义pre save and update
函数。
架构如下所示:
var TestSchema = new mongoose.Schema(
{
},
{
strict: false
}
);
这意味着没有已定义的字段,您可以输入所需的任何字段。现在,您希望在使用pre save
函数保存之前验证文档:
TestSchema.pre('save', function (next) {
var doc = this.toObject();
for (var prop in doc) {
if ('string' !== typeof doc[prop]) {
next(new Error('validation error'));
}
}
next();
});
您希望在pre update
函数上执行相同的操作。您可以在此处详细了解mongoose
Middleware
: