如何使用mongoose在模式中保存模式?

时间:2016-07-15 15:26:04

标签: node.js mongodb mongoose mongoose-schema

有没有办法将模式保存在另一个模式中?因为我没有保存嵌入式架构,所以我没有尝试这样做。这是我的模式:

var event = mongoose.Schema({
    name: String,
    location: String
});

var user = mongoose.Schema({
    name: String,
    events: [event]
});

var User = new mongoose.model('User', user);

我使用了mongoose的Model.save()函数,但我不知道是否存在将文档保存到mongo数据库的任何其他函数。此外,当我查询数据库并检索保存的数据时,它显示events: [],因此没有保存数据。有什么想法吗?

编辑:这是我用来创建对象的代码:

var kratos = new user({
    name: 'Kratos',
    events: [
        {
            name: 'Kill gods',
            location: 'Bay shore'
        },{
            name: 'Collect orbs',
            location: 'Olympus'
        }
    ]
}); 

2 个答案:

答案 0 :(得分:0)

我想你可以做一个简单的解决方案吗?

var user = mongoose.Schema({
    name: String,
    events: {
        name: String,
        location: String
    }
});

答案 1 :(得分:0)

将用户模型稍微更改为以下内容:

var User = mongoose.Schema({
    name: String,
    events: []
});

然后,您需要创建新的事件对象。这样的事情会做:

var events = [];

var newEvent = new Event({
    name : "Name",
    location: "Place"
});

events.push(newEvent);

var kratos = new User({
    name: 'Kratos',
    events: events
});