我正在创建一个用户可以创建问题的应用程序,而其他人可以对其进行upvote / downvote。
以下是我的sql架构的一部分:
CREATE TABLE "questions" (
id SERIAL,
content VARCHAR(511) NOT NULL,
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
CONSTRAINT pk_question PRIMARY KEY (id)
);
CREATE TABLE "votes" (
id SERIAL,
value INT,
question_id INT NOT NULL,
CONSTRAINT pk_vote PRIMARY KEY (id),
CONSTRAINT fk_question_votes FOREIGN KEY (question_id) REFERENCES questions (id) MATCH SIMPLE ON UPDATE CASCADE ON DELETE CASCADE
);
我想要的是Postgres给我的每个问题都有一系列投票,像这样:
[{ // a question
id: 1,
content: 'huh?',
votes: [{ // a vote
id: 1,
value: 1
}, { // another vote
id: 2,
value: -1
}]
}, { /*another question with votes*/ }]
我查看了聚合函数(如array_agg()),但它只给了我一些值。一个JOIN给了我一个加上投票的问题,并迫使我做服务器端操作,我不愿意这样做。
有没有办法做到这一点?关于我想弄错的是什么原因?
谢谢你的时间。
慕虎7371278