【发布时间】:2020-08-28 11:34:30
【问题描述】:
这是我在 stackoverflow 上的第一个问题,以前从未使用过,但这个问题让我抓狂。
我正在为我正在开发的一个 React 应用程序构建一个无限滚动组件,我正在尝试使 Postgres DB 查询工作。
我有 2 个表 - 挑战和用户挑战。
挑战有很多用户挑战。
我需要获取挑战的子部分(从开始到结束),每个挑战都有“参与者”数量(相关用户挑战的数量)的计数,以及所有挑战的计数。
类似这样的:
{
rows: [Challenge, Challenge, Challenge],
count: n
}
其中每个挑战包括作为“参与者”的用户挑战的总数,并且计数是所有挑战的计数。
这是查询:
let json_query = {
attributes: {
include: [[Sequelize.fn("COUNT", Sequelize.col("user_challenges.id")), "participants"]]
},
include: [{
model: UserChallenge, attributes: []
}],
order: [['timestamp', 'DESC']],
offset: start,
limit: end
}
start 和 end 数量是分页的开始和结束。
我按如下方式运行此查询:
var challengeInstances = await Challenge.findAndCountAll(json_query)
这会导致以下错误:
name: 'SequelizeDatabaseError',
parent: error: missing FROM-clause entry for table "user_challenges"
这是它正在运行的 sql:
`SELECT "challenge".* FROM (SELECT "challenge"."id", "challenge".*, COUNT("user_challenges"."id"), "challenge"."participants" FROM "challenges" AS "challenge" GROUP BY "challenge"."id" ORDER BY "challenge"."end_date" DESC LIMIT '4' OFFSET '0') AS "challenge" LEFT OUTER JOIN "user_challenges" AS "user_challenges" ON "challenge"."id" = "user_challenges"."challenge_id" ORDER BY "challenge"."end_date" DESC;`,
Sequelize 或原始查询都很好。 如果您需要更多信息,请告诉我,非常感谢。
【问题讨论】:
标签: sql node.js postgresql sequelize.js