javascript - SEQUELIZE:按关联模型的 COUNT 排序
问题描述
我目前有一个返回数组的查询,Projects
它还包括一个名为Campaign
. 我的Campaign
模型有一个名为的列status
,它是ACTIVE
or PAUSED
。对于Project
我的数组中的每个,我想接收ACTIVE
它包含的所有活动的计数,然后我想Projects
根据该计数以降序排列我的数组。
换句话说,我希望所有Projects
withACTIVE
活动都出现在我的查询完成后收到的数组的顶部。
const query = { id: { $in: ids } };
models.Project.findAndCountAll({
where: query,
limit: PROJECT_PAGE_SIZE,
offset: (PROJECT_PAGE_SIZE * (pageNumber - 1)),
distinct: true,
attributes: Object.keys(models.Project.attributes).concat([
[sequelize.literal('(SELECT SUM("strategies_data"."spend") FROM "strategies_data" WHERE "strategies_data"."project_id" = "Project"."id")'),
'total_spend'],
[sequelize.literal('(SELECT SUM("strategies_data"."impressions") FROM "strategies_data" WHERE "strategies_data"."project_id" = "Project"."id")'),
'total_impressions'],
]),
include: [{
model: models.Campaign,
attributes: ['id', 'name', 'status'],
include: [{ model: models.Channel }, { model: models.Strategy }],
}],
})
解决方案
推荐阅读
- python - 在 Flask 中处理 Pandas Dataframe 的最佳方法
- sql-server - 无法从 SQL Server 连接到 Azure Server
- git - 为什么VSCode在gitt diff中插入用^M标记的回车?
- r - 在 face_wrap() ggplot2 中更改构面标签
- go - 带有 http.Get 和 http.ServeFile 的 Golang 意外 EOF
- lisp - LISP - 编写函数 (REMOVE EL),从列表所有级别的另一个列表中删除给定的原子或列表
- sql-server - 存储过程中的所有语句都是一个事务吗
- android - Android Timestamps vs Unix Timestamps
- javascript - my for is running twice when it was supposed to run only once
- r - 为 R 中两个数据帧之间的日期范围内发生的事件创建指标变量