Задать вопрос
@Evan742
Nodeист и phpник

Почему sequelize возвращает только одну запись и с неверным полем rate?

Вот модели:
news:
'use strict';
module.exports = (sequelize, DataTypes) => {
  const news = sequelize.define('news', {
    id: {
      allowNull: false,
      autoIncrement: true,
      primaryKey: true,
      type: DataTypes.INTEGER
    },
    title: DataTypes.STRING,
    slug: {
      type: DataTypes.STRING(64),
      unique: true
    },
    body: DataTypes.STRING,
    postedBy: DataTypes.INTEGER
  }, {});
  news.associate = function(models) {
    models.news.hasMany(models.news_ratings, {  
      as: 'rate',
      foreignKey: models.news_ratings.newsId
    })
  };
  return news;
};

news_ratings:
'use strict';
module.exports = (sequelize, DataTypes) => {
  const news_rating = sequelize.define('news_ratings', {
    id: {
      allowNull: false,
      autoIncrement: true,
      primaryKey: true,
      type: DataTypes.INTEGER
    },
    user: DataTypes.INTEGER,
    rating: DataTypes.INTEGER,
    newsId: DataTypes.INTEGER
  }, {});
  news_rating.associate = function(models) {
    models.news_ratings.belongsTo(models.news, {
      foreignKey: models.news.id
    })
  };
  return news_rating;
};

И контроллер:
router.get('/news/:from/:count', (req, res, next) => {
    if (Number.isInteger(Number(req.params.from)) && Number.isInteger(Number(req.params.count))) {
        models.news.findAll({
            offset: Number(req.params.from),
            limit: Number(req.params.count),
            include: [{
                as: 'rate',
                model: models.news_ratings,
                // required: true,
                attributes: [
                    [sequelize.fn('AVG', sequelize.col('rating')), 'rate']
                ]
            }]
        })
        .then(response => res.json(response))
        .catch(err => {
            console.error(err)

            res.status(500).end()
        }) 
    } else next()
})

Таблица news:
5f18935e3fe85603381385.png
Таблица news_ratings:
5f1894ea756c1180440322.png

Если сделать запрос
/news/%любая_цифра%/1
то всё происходит верно, но если последний параметр uri увеличить, то отображается одна запись и rate неверный
  • Вопрос задан
  • 70 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы