Подтвердить что ты не робот

Sequelize ссылки на модели против ассоциаций

Просто начну использовать 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;
};
4b9b3361

Ответ 1

Используя references вы создаете ссылку на другую таблицу без добавления каких-либо ограничений или связей. Это означает, что это просто способ сообщить базе данных, что эта таблица имеет ссылку на другую.

Создание association добавит ограничение внешнего ключа к атрибутам. И вы можете выполнять всю магию за этим функции ассоциации. т.е. User.getTasks();

Более подробная информация о references здесь: https://sequelize.readthedocs.io/en/latest/docs/associations/#foreign-keys_1

Об association здесь: http://docs.sequelizejs.com/manual/tutorial/associations.html