我正在使用 node、express 和 sequelize 构建一个简单的数据库。我已经创建了我的模型,sequelize 在我的数据库中创建了表。
我有模型 User 和 City,具有多对多关系。 Sequelize 创建了表 Users、Cities 和一个连接表 CitiesUsers:带有 UserId 和 CityId。
我的问题是,当我创建一个新用户时,我该如何更新那个连接表? CityId 属性在创建时被忽略。
//Models use
//City.hasMany(User);
//User.hasMany(City);
var user = User.build({
first_name: 'John',
last_name: 'Doe',
CityId: 5
});
user.save();
最佳答案
在深入研究文档之后,我相信我已经找到了答案。
当创建多对多关系时,sequelize 会为每个模型创建 get、set 和 add 方法。
从文档中假设模型 User 和 Project 具有多对多: http://docs.sequelizejs.com/en/latest/docs/associations/#belongs-to-many-associations
This will add methods getUsers, setUsers, addUsers to Project, and getProjects, setProjects and addProject to User.
所以在我的情况下,我执行了以下操作,其中“城市”是从 City.find 返回的特定城市模型...
//user.setCities([city]);
models.User.find({ where: {first_name: 'john'} }).on('success', function(user) {
models.City.find({where: {id: 10}}).on('success', function(city){
user.setCities([city]);
});
});
关于javascript - Sequelize Many to Many - 如何创建新记录和更新连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28821812/