SequelizeEagerLoadingError: роль не связана с пользователем

Я использую Sequelize с MYSQL и экспресс. Я получаю SequelizeEagerLoadingError: роль не связана с пользователем при попытке выбрать данные из связанных моделей с помощью include.

У меня есть две модели: пользователь и роль. Пользователь принадлежит к ролям через RoleUser, а роль принадлежит к многим пользователям через RoleUser. Вот мои модели:

//Модель пользователя

'use strict';

module.exports = (sequelize, DataTypes) => {
  const User = sequelize.define('User', {
    id: {type:DataTypes.UUID,allowNull:false,unique:true,primaryKey:true},
    UserName: {type:DataTypes.STRING,unique:true,allowNull:false},
     Email: {type:DataTypes.STRING,allowNull:false,unique:true,validate: { isEmail: {msg: "Invalid Email"} }},
    Password: {type:DataTypes.STRING,allowNull:false},

  }, {});
  User.associate = function(models) {


        User.belongsToMany(models.Role,
            {
        through: 'RoleUser',
        foreignkey:'UserId'

    })




 };
  return User;
};

//Role Model
'use strict';
module.exports = (sequelize, DataTypes) => {
  const Role = sequelize.define('Role', {
    id: {type:DataTypes.UUID,allowNull:false,unique:true,primaryKey:true},
    Name: DataTypes.STRING,
    Description: DataTypes.STRING
  }, {});
  Role.associate = function(models) {
    Role.belongsToMany(models.User,
        {
            through:'RoleUser',
            foreignKey:'RoleId'

        }),


  };
  return Role;
};

//My query on user model

xports.index = function(req, res) {
  return User.findAll({ 
          include: [{
          model: Role,

        }],

    attributes:{
        exclude: ['Password','createdAt','updatedAt']

    }}).then((users)=>{
    console.info(users)
    }).catch(error=>{
    console.info(error);
    })

//ОШИБКА

 SequelizeEagerLoadingError: Role is not associated to User!

 **STATUS CODE: 200(OK)**

 I am getting same error in other models in the entire project. According to me the associations is correctly established and I can see in the PHPMyAdmin Relation View.

 *Express Version: 4.16.4
 Sequelize Version: 4.31.2
 Mysql2 version: 1.6.1*

 Any help. What am I doing wrong.
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
0
3 686
1

Ответы 1

Итак, вам нужно указать, как вы собираетесь вызывать включение.

User.associate = function(models) {
  User.belongsToMany(models.Role,{
    through: 'RoleUser',
    foreignkey:'UserId',
    as: 'Roles'
  })
};

Вам нужно сделать другой путь от ролей к пользователям, если вам это нужно, и с любой другой ассоциацией. Затем по вашему запросу:

User.findAll({ 
  include: [{
    model: Role,
    as: 'Roles'
  }],
  attributes:{ exclude: ['Password','createdAt','updatedAt'] }
})

Спасибо за попытку помочь мне. Но я все еще получаю точно такую ​​же ошибку. Мои ассоциации выглядят нормально, но это просто не работает для меня.

wafutech 08.03.2019 08:03

@wafutech У меня такая же проблема... как ты ее решил? Лучший

OtavioLipari 19.04.2020 00:13

Другие вопросы по теме