- bounty将在6天后过期**。回答此问题可获得+50声望奖励。turivishal希望引起更多人关注此问题。
当前模式如下所示:
const schema = new mongoose.Schema(
filters: {
type: Object,
default: {}
}
);
输入文件样本:
{
filters: {
field1: "5a934e000102030405000001",
field2: "5a934e000102030405000002",
field3: "5a934e000102030405000003"
}
}
filters
对象属性将存储动态属性/字段,但所有都将是ObjectId
类型,
目前,我使用pre-hook和lodash方法将类型转换为ObjectId类型。
SchemaObj.pre('save', function (next) {
this.filters = _.reduce(this.filters, (r, v, k) => v ? { ...r, [k]: mongoose.Types.ObjectId(v) } : r, {});
next();
});
有没有办法定义ObjectId类型的动态对象字段?
如果mongoose提供任何其他方法,我期待这样的东西:
const schema = new mongoose.Schema(
filters: {
type: {
*: mongoose.Types.ObjectId
}
}
);
1条答案
按热度按时间n3h0vuf21#
您可以将字段定义为Map