sequelizejs如何在save/create时设置关联?
How to set association at the time of save/create in sequelizejs?
对于像这样的简单模型:
var User = sequelize.define('User', { email: Sequelize.STRING });
var Team = sequelize.define('Team', { name: Sequelize.STRING });
User.belongsTo(Team);
Team.create({name:'blah'});
你如何存储一个新用户并同时设置它的TeamId(这里的同时是指在一个INSERT中)
这对于 REFERENCE 是强制性的(NOT NULL)并且通常 user.setTeam(team)
在 INSERT 不起作用后生成 UPDATE 的情况很重要。
显然 User.create({ email: 'x', team: team })
中作为 属性 的额外团队将被忽略,以下内容:
var user = User.build({email:'x'});
user.setTeam(team);
user.save();
生成一个额外的完全错误的 INSERT:
INSERT INTO `Users` (`TeamId`,`updatedAt`,`createdAt`)
VALUES (4,'2015-08-19 18:10:36','2015-08-19 18:10:36');
-- has no id or email
老问题,但也许有人会从这个答案中受益。
假设你要添加的team
实例已经保存在数据库中,你可以添加save
参数设置为false
,添加关联时:
var user = User.build({email:'x'});
user.setTeam(team, {save: false});
user.save();
我花了很长时间寻找那个解决方案,我不知道为什么文档没有提到它(或者我在那里找不到它)
对于像这样的简单模型:
var User = sequelize.define('User', { email: Sequelize.STRING });
var Team = sequelize.define('Team', { name: Sequelize.STRING });
User.belongsTo(Team);
Team.create({name:'blah'});
你如何存储一个新用户并同时设置它的TeamId(这里的同时是指在一个INSERT中)
这对于 REFERENCE 是强制性的(NOT NULL)并且通常 user.setTeam(team)
在 INSERT 不起作用后生成 UPDATE 的情况很重要。
显然 User.create({ email: 'x', team: team })
中作为 属性 的额外团队将被忽略,以下内容:
var user = User.build({email:'x'});
user.setTeam(team);
user.save();
生成一个额外的完全错误的 INSERT:
INSERT INTO `Users` (`TeamId`,`updatedAt`,`createdAt`)
VALUES (4,'2015-08-19 18:10:36','2015-08-19 18:10:36');
-- has no id or email
老问题,但也许有人会从这个答案中受益。
假设你要添加的team
实例已经保存在数据库中,你可以添加save
参数设置为false
,添加关联时:
var user = User.build({email:'x'});
user.setTeam(team, {save: false});
user.save();
我花了很长时间寻找那个解决方案,我不知道为什么文档没有提到它(或者我在那里找不到它)