Использование groupby в sequelize для получения массива сгруппированных элементов - PullRequest
0 голосов
/ 21 марта 2019

Я использую sequelize (4.42.0) вместе с экспресс.У меня есть две таблицы categories и main_categories, которые имеют следующую связь:

db.main_categories.hasMany(db.categories);
db.categories.belongsTo(db.main_categories);

Я попытался получить список всех категорий, сгруппированных по их основной категории, с помощью следующей команды sequelize:

      var _categoryList = await models.main_categories.findAll({include: [{model: models.categories}], group:['main_categories.id']});
 res.send({category_list: _categoryList});

Вывод вышеприведенного кода сиквела:

{
    "category_list": [
        {
            "id": 1,
            "name": "Physics",
            "created_at": null,
            "updated_at": null,
            "categories": [
                {
                    "id": 1,
                    "name": "Mechanics",
                    "created_at": "2019-03-21T03:39:48.000Z",
                    "updated_at": "2019-03-21T03:39:48.000Z",
                    "main_category_id": 1
                }
            ]
        },
        {
            "id": 2,
            "name": "Chemistry",
            "created_at": null,
            "updated_at": null,
            "categories": [
                {
                    "id": 6,
                    "name": "General and Physical Chemistry",
                    "created_at": "2019-03-21T03:42:54.000Z",
                    "updated_at": "2019-03-21T03:42:54.000Z",
                    "main_category_id": 2
                }
            ]
        },
        {
            "id": 3,
            "name": "Zoology",
            "created_at": null,
            "updated_at": null,
            "categories": []
        },
        {
            "id": 4,
            "name": "Botany",
            "created_at": null,
            "updated_at": null,
            "categories": []
        }
    ]
}

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

Моя main_categories таблица с данными: enter image description here

Моя categories таблица с данными: enter image description here

1 Ответ

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

Итак, позже я обнаружил, что, поскольку ассоциации уже были объявлены, нам просто нужно включить модель без какого-либо предложения groupby.Итак, последний код, который работал для меня, был:

var _categoryList = await models.main_categories.findAll({include: [{model: models.categories}]});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...