我正在尝试在节点中的模型中引用另一个对象,
User = new Schema({
username: {
type: String,
index: {unique: true}
}
});
Idea = new Schema({
Creator: {
type: User
}
});
但是我收到了这个错误Undefined type at "creator" Did you try nesting Schemas? You can only nest using refs or arrays.
我相信我想使用refs,但找不到文档,有人可以帮助我。感谢
答案 0 :(得分:34)
我在这里找到了我自己问题的答案。
User = new Schema({
username: {
type: String,
index: {unique: true}
}
});
Idea = new Schema({
Creator: {
type: Schema.ObjectId,
ref: 'User'
}
});
答案 1 :(得分:16)
我想添加对此问题的回复,因为这是Google的第一个结果。
不,你不能使用嵌套架构,因为其他回复说。但是你仍然可以在不同的模式中使用相同的对象。
// Regular JS Object (Not a schema)
var Address = {
address1: String,
address2: String,
city: String,
postalcode: String
};
var Customer = new Schema({
firstname: String,
lastname: String,
address: Address
});
var Store = new Schema({
name: String,
address: Address
});
通过这种方式,您可以修改地址对象,以便在共享对象的所有模式上进行更改。
答案 2 :(得分:0)
以下是link手册@ refs。
你不能在架构设计层面使用ref。
答案 3 :(得分:0)
我决定通过使我的子文档成为嵌套类型
来为我的项目解决类似的问题 Foo = new Schema({
name: String,
bar: {
name: String
}
});
显然,如果你需要Bar作为自己的模型,这将不起作用。也许是因为您将其作为其他对象中的模型引用。在我的情况下,这就是我需要做的全部,但是Mongoose指南的Subdocuments部分并未提及它作为一个选项,所以我在这个讨论中添加。