续集模型引用与关联

时间:2017-09-19 16:27:04

标签: sequelize.js

刚开始使用Sequelize并且我已经设置了一堆模型和种子,但我无法找出引用与关联。如果他们甚至做了我认为他们做的事情,我就不会看到参考用例,但我在文档中找不到好的解释。

这是多余的引用和关联吗?

module.exports = (sequelize, DataTypes) => {
  const UserTask = sequelize.define('UserTask',
    {
      id: {
        primaryKey: true,
        type: DataTypes.UUID,
        defaultValue: DataTypes.UUIDV4
      },
      userId: {
        type: DataTypes.UUID,
        references: { // <--- is this redundant to associate
          model: 'User',
          key: 'id'
        }
      }
      // ... removed for brevity
    },
    {
      classMethods: {
        associate: models => { <--- makes references redundant?
          UserTask.belongsTo(models.User, {
            onDelete: 'CASCADE',
            foreignKey: {
              fieldName: 'userId',
              allowNull: true,
              require: true
            },
            targetKey: 'id'
          });
        }
      }
    }
  );
  return UserTask;
};

1 个答案:

答案 0 :(得分:10)

使用references创建对另一个表的引用,而不添加任何约束或关联。这意味着这只是信令数据库的一种方式,这个表可以引用另一个。

创建association将为属性添加外键约束。你可以执行关联功能背后的所有魔力。即User.getTasks();

此处有关references的更多信息:https://sequelize.readthedocs.io/en/latest/docs/associations/#foreign-keys_1

此处关于associationhttp://docs.sequelizejs.com/manual/tutorial/associations.html