2012-02-18 35 views
19

我想引用在节点模型另一个对象,MongoDB的类型参考节点

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.我相信我要用裁判,但它无法找到文档,可一些一个帮助我。谢谢

回答

34

我在这里发现了我自己的问题的答案。

User = new Schema({ 
    username: { 
     type: String, 
     index: {unique: true} 
    } 
}); 

Idea = new Schema({ 
    Creator: { 
     type: Schema.ObjectId, 
     ref: 'User' 
    } 
}); 
+1

1.救命2.“mongoose.Types.ObjectId”和“mongoose.Schema.ObjectId”有什么区别?我发现它真的很混乱,它触发“未定义类型”的错误,它很难理解为什么 – 2013-12-05 14:22:17

+0

我想知道 的差异mongoose.Types.ObjectId VS mongoose.Schema.ObjectId太! – sunnycmf 2014-02-16 14:47:01

0

这是link手动@ refs。

您无法在架构设计级别使用参考。

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 
}); 

这样,你可以修改地址对象,以使在所有模式共享对象中的可用的变化。