Sequelize.js - 具有关联的持久模型

时间:2016-02-19 15:13:08

标签: node.js express sequelize.js

我正在尝试使用以下模型和save方法保存实体,但它只创建父实体。参见:

var Project = database.define('projects', {
    name : {
        type : Sequelize.STRING,
        allowNull : false,
        unique : true
    },
    archived : {
        type : Sequelize.BOOLEAN,
        allowNull : false,
        defaultValue : false
    }
});

var Sprint = database.define('sprints', {
    name : {
        type : Sequelize.STRING,
        allowNull : false,
        unique : true
    },
    start : {
        type : Sequelize.DATE
    },
    end : {
        type : Sequelize.DATE
    }
});

Project.hasMany(Sprint, {
    as : 'sprints'
});
Sprint.belongsTo(Project);

Express中的保存方法:

var project = req.body;
models.Project.create(project).then(function(project){
    return res.json(project);
}, function(err) {
    return next(err); 
});

req.body就像:

{
    archived : false,
    name : "Projeto 1",
    sprints : [{
            end : "2016-02-25T03:00:00.000Z",
            name : "Sprint 1",
            start : "2016-02-19T02:00:00.000Z"
        }
    ]
}

结果是在数据库中创建的项目的一条记录。没什么。
Sprint条目也是新的,我期待它可以与Project一起创建。

有什么想法吗?

由于

1 个答案:

答案 0 :(得分:1)

好的,现在它保存了Project和它的Sprint:

var project = req.body;
models.Project.create(project, {
    include : [{
            model : models.Sprint,
            as : 'sprints'
        }
    ]
}).then(function (project) {
    return res.json(project);
}, function (err) {
    return next(err);
});