Ошибка sequelizejs при вызове связанной модели - PullRequest
0 голосов
/ 17 июня 2019

Я использую sequelize для связи с базой данных. Я уже связал 2 модели, но когда я получаю эти модели, они показывают мне ошибку.

вот мой код для модели

const Sequelize = require('sequelize');
const sequelize = require('../database/database');

const Purpose = sequelize.define('purpose', {
  id: {
    type: Sequelize.INTEGER,
    primaryKey: true,
    autoIncrement: true,
    allowNull: false
  },
  title: {
    type: Sequelize.STRING,
    allowNull: false
  },
  weighting: {
    type: Sequelize.STRING,
    allowNull: false
  },
  iconsUrl: {
    type: Sequelize.STRING,
    allowNull: false
  }
})

module.exports = Purpose;

и вот как я связал это предложение с другой таблицей

PurposeList.belongsToMany(User, { through: PurposeUser });
User.hasMany(LifeArea);

когда я получаю таблицу или добавляю include: [ { model: PurposeUser, as: 'projects' } ], получаю эту ошибку purposeUser is not associated to purpose!

Я использую это с Angular 7.

Я не уверен, что это связано с angular, или я что-то неправильно использую.

exports.getUserPurpose =  (req, res, next) => {

  const userID = req.userData.userId;
  const purposesList = [];
  PurposeUser.findAll({ where: {userId: userID },
    order: ['menuOrder'],
  })
  .then(results => {
    const purposeID = [];

    results.map(res => {
      purposeID.unshift(res.dataValues.purposeId);
      purposesList.unshift({id: res.dataValues.id, purposeId: res.dataValues.purposeId, weighting: res.dataValues.weighting})
    });

    return Purpose.findAll({
      include: [ { model: PurposeUser, as: 'projects' } ],
      where: {id: purposeID},
    })
  })
  .catch(err => console.log('err', err));
}```

1 Ответ

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

Вам нужно настроить обе стороны отношения ...

Purpose.belongsToMany(User, { through: PurposeUser, as: 'Users', foreignKey: 'purpose_id' });
User.belongsToMany(, {Purpose, {through: PurposeUser, as: 'Purposes', foreignKey: 'user_id' });

вам также нужно назначить некоторые значения внешнего ключа, поскольку вы, вероятно, назвали свои столбцы target_id и user_id в PurposeUser ...У вас там был PurposeList, но вы экспортировали его как Purpose, так что если вы по какой-то причине переименовали эти вещи, я не смогу это увидеть ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...