javascript - Sequelize Many to Many - 如何创建新记录和更新连接表

标签 javascript mysql sequelize.js

我正在使用 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/

相关文章:

javascript - 我如何使用 jquery 获取特定文本

javascript - 适用于 iOS/Android 的 jQuery 日期时间选择器

mysql - 从两个表中选择数据作为一张表

MySQL:相交匹配一定数量特征的行

sequelize.js - 当我拥有所有组 ID 时,Sequelize 中是否有 "user.setGroups()"的快捷方式?

javascript - Facebook 聊天框不会在页面之间重新加载

javascript - JS在列表框中添加按钮

php - Symfony 2 连接不工作主义和 MySQL

node.js - sequelize.js - 添加一列作为复合主键

node.js - 如何使用Sequelize.js建立表之间的多对多关系?