sequelize在saving or updating an instance时的问题
发布于 20 天前 作者 IkarosCoCo 227 次浏览 来自 问答

db:mysql user和task是一对多关系 User: sequelize.define(“User”, { username: DataTypes.STRING }, { classMethods: { associate: function(models) { User.hasMany(models.Task) } } });

Task: sequelize.define(“Task”, { title: DataTypes.STRING }, { classMethods: { associate: function(models) { Task.belongsTo(models.User, { onDelete: “CASCADE”, foreignKey: { allowNull: false } }); } } });

当我查询出一个user的instance的时候 models.User.find({ where :{ id : ‘1’ }, include: [ models.Task ] }).then(function(a) { a.Tasks[0].title = ‘cnodejs’; a.Tasks[0].save(); //这样能保存user对应的第一个task的title a.save();//这样则不能保存修改的task值 }); 我知道原因大概是在save或者update操作之前,会判断属性是否change过,然而请问有没有什么方法可以实现当我通过user对象修改其task的值,直接通过保存user对象就能实现task的级联修改?

2 回复

updateAttributes()

感谢你的时间@jiangliqin 用hibernate可以实现这样的功能一个user有多个task,我通过user修改了一个task,类似user.tasks[0].title = "aaaa" 然后我保存user.save(),那个修改的task也能被保存。我用updateAttributes()并没有实现这样的功能,请问如果你用updateAttributes()方法,会怎么实现上述的功能呢?

回到顶部