这是我关于 stackoverflow 的第一个问题,以前从未使用过,但这个问题让我把头发扯掉了。
我正在为我正在开发的反应应用程序构建一个无限滚动组件,我正在尝试使 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
}
开始和结束数量是分页的开始和结束。
我正在按如下方式运行此查询:
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 或原始查询都很好。如果您需要更多信息,请告诉我,非常感谢。