是什么原因导致无法在没有数组的情况下嵌套Schema

时间:2013-02-25 04:13:31

标签: javascript node.js mongodb mongoose

我只是想知道为什么mongoose模式定义中不允许这样的事情:

var NameSchema = new mongoose.Schema({
  first: {type: String, trim: true },
  last: {type: String, trim: true }
});

var UserSchema = new mongoose.Schema({
  name: NameSchema,          // this line causes an error
  age: {type: Number}
});

这似乎是一个设计决定,我只是想知道我是否可以解释为什么它不受支持

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用此方法嵌套架构:

name: [{ some: "props" } ]

name: [NameSchema]

直接提供模式定义(不使用“type:...”)的问题是,Mongoose无法区分选项对象和模式对象。 Mongoose会认为 NameSchema 实际上是一个选项对象(包含类型,修剪等选项......)。