Как посчитать вложенные элементы внутри модели? - PullRequest
0 голосов
/ 25 апреля 2018

Я создаю приложение с Express, Postgres как db и Sequelize как ORM.

Это ответ, который я получаю:

{
  "user": {
    "user_name": "John",
    "post": [
      {
        "id": 1,
        "created_at": "2018-04-16T22:52:59.054Z",
        "post_titles": [
          {
            "title_id": 3571
          },
          {
            "title_id": 3570
          },
          {
            "title_id": 3569
          }
        ]
      },
    ],
  }
}

Как подсчитать, сколько заголовков в посте?

У меня есть 4 модели:
User, имеет много Posts
Post, имеет много от Titles до PostTitles
Title
PostTitle

Это мой запрос:

User.findOne({
  where: { id: req.params.id },
  attributes: ['id', 'user_name'],
  include: [
    { model: Post,
      attributes: ['id', 'created_at'],
      include: {
        model: PostTitles,
        attributes: ['title_id']
      }
    }
  ]
})

Спасибо!

1 Ответ

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

Вы можете использовать функцию count.

User.findOne({
  where: { id: req.params.id },
  attributes: ['id', 'user_name'],
  include: [
    { model: Post,
      attributes: ['id', 'created_at'],
      include: {
        model: PostTitles,
        attributes: ['title_id',[Sequelize.literal('COUNT(DISTINCT(title_id))'), 'totalcount']]
      }
    }
  ]
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...