Postgres включают броски "name": "SequelizeEagerLoadingError" - PullRequest
0 голосов
/ 30 апреля 2018

У меня проблемы с выяснением, почему мой оператор включения выдает эту ошибку

"name": "SequelizeEagerLoadingError"

Моя рассматриваемая функция контроллера выглядит следующим образом

retrieve (req, res) {
    return User
      .findOne({
        where: {
          token_id: req.params.token_id
        },
        include: [{
          model: subscribedcurrency,
          as: 'subscribed currency'
        }]
      })
      .then(user => {
        if (!user) {
          return res.status(404).send({
            message: 'User Not Found'
          })
        }
        return res.status(200).send(user)
      })
      .catch(error => res.status(400).send(error))
  },

Модель для подписанной валюты выглядит следующим образом

module.exports = (sequelize, DataTypes) => {
  var SubscribedCurrency = sequelize.define('SubscribedCurrency', {
    symbol: {
      type: DataTypes.STRING,
      allowNull: false
    },
    name: {
      type: DataTypes.STRING,
      allowNull: false
    },
    priceAtSubscription: {
      type: DataTypes.STRING,
      allowNull: false
    }
  })
  SubscribedCurrency.associate = (models) => {
    SubscribedCurrency.hasMany(models.User, {
      foreignKey: 'userId',
      onDelete: 'CASCADE'
    })
  }
  return SubscribedCurrency
}

Я пытался изменить то, как он запрашивает, первичный ключ пользователя, почти все, что я могу придумать. Отношения между Пользователем и подписанной валютой много-много.

без оператора include и запроса findOne отлично работает!

1 Ответ

0 голосов
/ 30 апреля 2018

Я думаю, все, что вам нужно, это удалить as: 'subscribed currency', так как вы не определили связь с псевдонимом.

Итак, из этого:

include: [{
    model: subscribedcurrency,
    as: 'subscribed currency'
}]

К этому:

include: [{
    model: subscribedcurrency,
}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...