Node.js mongoose.js中的嵌套架构-只能使用数组表示法?
我正在使用Node、Restify和Mongoose创建一个restapi。在尝试创建模式时,我在一个名为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
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。希望我能提供更多帮助,对不起!