在保存父项时,会自动保存关联对象

鉴于以下模型:

var Project = sequelize.define('project', {/* ... */}) var Task = sequelize.define('task', {/* ... */}) Project.hasMany(Task, {as: 'Tasks'}); Task.belongsTo(Project); 

在保存项目时,如何更改任务并更新数据库。

 Project.findById(1, {include: Task, as: 'tasks'}).then(function(project) { project.tasks.each(function(task) { task.status = 'done'; }); project.status = 'closed'; project.updatedBy = 'user'; // ...many more statements that modify the project and tasks for example project.save(); // << I want this to save the whole hierarchy to the database, similar to how Hibernate does it, if some people are familiar }); 

当调用project.save() ,任务不会更新。 为什么?

如果您使用findfindAll ,则可以按照Eager loading中所述利用急切加载 。

要做到这一点,你需要使用的属性includeinclude: [Task]

这样你有一个内部连接,不需要查询任务。

根据你的代码,你可以有:
(我现在不能testing这个代码,对不起,如果它不完美):

 Project.find({ where: {id: 1}, include: [{model: Task, as: 'task'}]}) .then(function(project) { project.task[0].updateAttributes({ status = 'done'; }).then(function() { //done! }); }); 

这个答案可能也有帮助。