Необработанное отклонение SequelizeEagerLoadingError в sequelize - Nodejs - PullRequest
0 голосов
/ 19 июня 2019

Это моя родительская модель 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

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

Unhandled rejection SequelizeEagerLoadingError: provider_clients is not associated to Providers!

1 Ответ

0 голосов
/ 19 июня 2019

Это проблема ассоциации в вашей структуре.Измените свою ассоциацию на 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!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...