如何解决MongoDB嵌套Schema中的Map类型未定义错误?
解决Mongoose Schema中Map类型未定义的错误
问题原因
你遇到的Undefined type 'Map'错误,是因为在Mongoose Schema里直接使用了原生JavaScript的Map类型,而Mongoose要求必须使用它内置的mongoose.Schema.Types.Map来定义Map类型字段。
修复后的Schema代码
只需要修改expensesByCategory字段的type定义即可,其他部分保持不变,完全保留原有行为:
const KPISchema = new Schema( { totalProfit: { type: mongoose.Types.Currency, currency: "USD", get: (v) => v / 100, }, totalRevenue: { type: mongoose.Types.Currency, currency: "USD", get: (v) => v / 100, }, totalExpenses: { type: mongoose.Types.Currency, currency: "USD", get: (v) => v / 100, }, expensesByCategory: { type: mongoose.Schema.Types.Map, // 修改为Mongoose内置的Map类型 of: { type: mongoose.Types.Currency, currency: "USD", get: (v) => v / 100, }, }, monthlyData: [monthSchema], dailyData: [daySchema], }, { timestamps: true, toJSON: { getters: true } } );
说明
这个修改不会改变你原本期望的行为:expensesByCategory依然是键值对结构的Map,值的类型还是配置了USD货币和自动除以100的getter的Currency类型,完全符合你的需求。
内容的提问来源于stack exchange,提问作者chiku
相关产品推荐
相关产品推荐

