You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 12:15:17