Секвелирование группы по включаемой модели работает корректно в MySQL, но в SQL Server появляется ошибка «столбец ... недопустим в списке выбора ...» - PullRequest
0 голосов
/ 26 марта 2019

Последовательность групп по включаемым моделям работает корректно в MySQL, но не в SQL Server, основные коды выглядят следующим образом

Модели

var topics = sequelize.define('topics', {
        id: {
            type: DataTypes.INTEGER,
            primaryKey: true,
            allowNull: false,
            autoIncrement: true
        },
        title:{
            type:  DataTypes.STRING,
            allowNull: false
        }
});
var comment = sequelize.define('comment', {
        id: {
            type: DataTypes.INTEGER,
            primaryKey: true,
            allowNull: false,
            autoIncrement: true
        },
        text: { type:DataTypes.TEXT, allowNull:false },
        topic_id: { type: DataTypes.INTEGER, allowNull:false }
});

// Association
comment.hasOne(topics, {foreignKey:"id", sourceKey:"topic_id"})
topics.hasMany(comment, { foreignKey:"topic_id", sourceKey:"id" })

// Query get error in SQL Server, but goes well in MySQL
topics.findAll({
        group:["topics.id"],
        include: [{ model:comment, attributes:[] }]
})

Над кодом хорошо работает в MySQL, но при запускев SQL Server я получаю сообщение об ошибке "Столбец 'themes.id' недопустим в выбранном списке ...."

1 Ответ

0 голосов
/ 26 марта 2019

Я решил проблему, в MSSQL хитрость в том, что вам нужно перечислить все поля в группе, например:

topics.findAll({
   group:["topics.id","topics.title"], // <---- need to list "topics.title"
   include: [{ model:comment, attributes:[] }],
   attributes:{
      include:[[sequelize.fn('count',sequelize.col('comments.id')),'participants']]
   }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...