Необработанный отказ SequelizeEagerLoadingError при продолжении - Nodejs

Это моя родительская модель Providers

    module.exports = function(sequelize, DataTypes) {
        const Providers = sequelize.define('Providers', {
              provider_id: {
                type: DataTypes.INTEGER,
                primaryKey: true,
                autoIncrement: true
              },
              provider_name: DataTypes.STRING,
              address: DataTypes.STRING,
              city: DataTypes.STRING,
              state: DataTypes.STRING,
              zip: DataTypes.STRING,
              phone: DataTypes.STRING,
              website: DataTypes.STRING,
              accepting_new_clients: DataTypes.INTEGER
          });

          Providers.associate = models => {
            Providers.belongsTo(model.Providerclients, {foreignKey: "provider_id" })
        }
          return Providers;
      }

Это моя дочерняя модель Providerclients

    module.exports = function(sequelize, DataTypes) {
        const Providerclients = sequelize.define('provider_clients', {
            provider_client_id: {
                type: DataTypes.INTEGER,
                primaryKey: true,
                autoIncrement: true
              },
              provider_id: DataTypes.INTEGER,
              client_id: DataTypes.INTEGER
          },{});

          Providerclients.associate = (models) => {
            Providerclients.belongsToMany(models.Providers, {foreignKey: "provider_id"});
        };


          return Providerclients;
      }

Это моя другая дочерняя модель Providerinsurance

    module.exports = function(sequelize, DataTypes) {
        const Providerinsurance = sequelize.define('provider_insurance', {
            provider_insurance_id: {
                type: DataTypes.INTEGER,
                primaryKey: true,
                autoIncrement: true
              },
              provider_id: DataTypes.INTEGER,
              insurance_id: DataTypes.INTEGER
          },{});

          return Providerinsurance;
      }

Я пытаюсь получить данные из таблицы поставщиков, присоединяющейся к таблице клиентов поставщиков. Чтобы было ясно, я хочу запустить приведенный ниже запрос в формате mysql.

 select * from providers as p left join provider_clients as pc on p.provider_id = pc.provider_id left join provider_insurance as pi on p.provider_id = pi.provider_id

Я попытался присоединиться к продолжению, как вы можете видеть в моделях Providers и Providerclients. Я получил следующую ошибку

Unhandled rejection SequelizeEagerLoadingError: provider_clients is not associated to Providers!

person rji rji    schedule 19.06.2019    source источник


Ответы (1)


Это проблема ассоциации в вашей структуре. Измените свою связь на hasMany.

provider.hasMany(clientProvider)

Это добавит provider id к client provider.

http://docs.sequelizejs.com/manual/associations.html#one-to-many-associations--hasmany-

Вот краткое изложение

Player.belongsTo(Team)  // `teamId` will be added on Player / Source model

User.belongsTo(Company, {foreignKey: 'fk_company'}); // Adds fk_company to User

User.belongsTo(Company, {foreignKey: 'fk_companyname', targetKey: 'name'}); // Adds fk_companyname to User
========================================================================
Coach.hasOne(Team)  // `coachId` will be added on Team / Target model

============================================================================
Project.hasMany(User)
This will add the attribute projectId or project_id to User. Instances of Project will get the accessors getWorkers and setWorkers.

Project.hasOne(User)
hasOne will add an attribute projectId to the User model!
person Shahzeb Khan    schedule 19.06.2019