Mongodb类型的引用节点

时间:2012-02-18 05:49:18

标签: node.js 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.我相信我想使用refs,但找不到文档,有人可以帮助我。感谢

4 个答案:

答案 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部分并未提及它作为一个选项,所以我在这个讨论中添加。