获取“ TypeError:schema.virtual(...)。get不是一个函数”

时间:2018-12-01 10:27:41

标签: javascript node.js mongoose

尝试定义架构时收到此错误。

错误:

node_modules/mongoose/lib/plugins/idGetter.js:12
    schema.virtual('id').get(idGetter);

TypeError: schema.virtual(...).get is not a function
    at module.exports (/Users/g.paradiso/dev/albumin-diet/node_modules/mongoose/lib/plugins/idGetter.js:12:26)

模式:

export const albumSchema = new Schema({
  id: {
    spotify: String
  },
  tags: [{ type: Schema.Types.ObjectId, ref: "Tag" }],
}, { timestamps: true });

2 个答案:

答案 0 :(得分:0)

引发错误是因为我有一个名为id的字段,该字段可能覆盖了内部_id字段。

我决定在以下位置更改架构:

export const albumSchema = new Schema({
  publicId: {
    spotify: String
  },
  tags: [{ type: Schema.Types.ObjectId, ref: "Tag" }],
}, { timestamps: true });

答案 1 :(得分:0)

我发现这主要是由定义模式中已经定义的虚拟字段名称引起的。如果您已经在架构中定义了id,则应该在架构中更改定义的属性的名称或更改虚拟字段名称。

例如

export const albumSchema = new Schema({
  // changing from id to maybe album_id
  id: {
    spotify: String
  },
  tags: [{ type: Schema.Types.ObjectId, ref: "Tag" }],
}, { timestamps: true });

// changing the virtual field name id to maybe spotify_id will also work
schema.virtual('id',{...})