Node.js mongoose.js中的嵌套架构-只能使用数组表示法?

Node.js mongoose.js中的嵌套架构-只能使用数组表示法?,node.js,mongoose,schema,Node.js,Mongoose,Schema,我正在使用Node、Restify和Mongoose创建一个restapi。在尝试创建模式时,我在一个名为api.js的文件中执行了以下操作: var AddressSchema = new Schema({ address1: String, address2: String, city: String, state: String, country: String, postalCode: String }); var AccountSche

我正在使用Node、Restify和Mongoose创建一个restapi。在尝试创建模式时,我在一个名为
api.js
的文件中执行了以下操作:

var AddressSchema = new Schema({
    address1: String,
    address2: String,
    city: String,
    state: String,
    country: String,
    postalCode: String
});

var AccountSchema = new Schema({
    property1: String,
    property2: Number,
    property3: Boolean,
    owner: {
        firstName: String,
        lastName: String,
        birthDate: Date,
        ssn: String,
        phoneNumber: String,
        mailingAddress: AddressSchema,
        physicalAddress: AddressSchema
    }
});

var Account = mongoose.model("Account", AccountSchema);
然后我有各种各样的restify服务器,它使用mongoose模型。当我使用
node api.js
运行此程序时,会出现以下错误:

C:\yadda\scjema.js:362
抛出新的TypeError(“%”+路径+

TypeError:在“owner.mailingAddress”处未定义类型。是否尝试 嵌套架构?只能使用引用或数组进行嵌套。

我更新了模式,如下所示:

        mailingAddress: [AddressSchema],
        physicalAddress: [AddressSchema]
这似乎现在起作用了……但是,我不太清楚这意味着什么。我不希望我的mailingAddress或physicalAddress是数组,我希望它们是单个对象。我不明白为什么我不能直接引用嵌套对象的嵌套模式类型,如我的AddressSchema。唯一的其他选择是显式嵌入我的帐户模式中的我的地址模式,这意味着多次重复相同的代码块(我的帐户模式实际上相当大,有五个可能需要地址的位置。)

尝试这样做:

var AddressSchema = new Schema({
    address1: String,
    address2: String,
    city: String,
    state: String,
    country: String,
    postalCode: String
});

var AccountSchema = new Schema({
    property1: String,
    property2: Number,
    property3: Boolean,
    owner: {
        firstName: String,
        lastName: String,
        birthDate: Date,
        ssn: String,
        phoneNumber: String,
        mailingAddress: { type: AddressSchema, ref: 'AddressSchema' },
        physicalAddress: { type: AddressSchema, ref: 'AddressSchema' }
    }
});

var Account = mongoose.model("Account", AccountSchema);

您是否尝试过
mailingAddress:{AddressSchema}
?@remus:这似乎导致语法错误。Blat.Hrm。希望我能提供更多帮助,对不起!