pg-promiseを使用してNode.JSとPostgreSQLを使用して非常に単純なRESTプラットフォームを構築しています。私の目標は、ユーザーとチケットを使って信じられないほど単純な発券システムを作ることです。この時点では、すべてのチケットのリストをサーバーに照会できるようにしたいだけです。pg-promiseを使用してJSON出力を書式設定し、外部キーをオブジェクトとしてカプセル化する
私のデータベースには、次の形式での2つのテーブルで構成されています
CREATE TABLE people (
ID SERIAL PRIMARY KEY,
NAME VARCHAR(128)
);
CREATE TABLE tickets (
ID SERIAL PRIMARY KEY,
SUBMITTED_BY int4 REFERENCES people(ID),
TITLE VARCHAR(128)
あなたは人にチケットを指し、単一の外部キーがある見ることができるように。
coop=> SELECT * FROM people;
id | name
----+----------
1 | John Doe
(1 row)
coop=> SELECT * FROM tickets;
id | submitted_by | title
----+--------------+------------------
1 | 1 | My first ticket!
(1 row)
をそして私はJSONレスポンスをレンダリングするために、次のクエリ機能でPG-約束を使用します:私は、次のデータを自分のデータベースに取り込まれている
// GET ALL query function
function getAllTickets(req, res, next) {
db.any('select * from tickets left join people on tickets.submitted_by = people.id;')
.then(function (data) {
res.status(200)
.json({
status: 'success',
data: data,
message: 'Retrieved ALL tickets'
});
})
.catch(function (err) {
return next(err);
});
}
機能が動作しますが、私はJSON出力を取り出すことができます
:: GET /api/tickets
{"status":"success","data":[{"id":1,"submitted_by":1,"title":"My first ticket!","name":"John Doe"}],"message":"Retrieved ALL tickets"}
しかし、これは私が望む形式ではありません。私は簡単にAngular2サービスからこのAPIを消費することができるので、これこれをしたい理由は
{"status":"success","data":[{"id":1,submitted_by: {"id": 1, "name":"John Doe"},"title":"My first ticket!"}],"message":"Retrieved ALL tickets"}
と:私は次のように外部キーを交換し、「チケット」オブジェクト内「人のオブジェクトをカプセル化したいですチケットと人物を私のコンポーネント内のオブジェクトに変換します。しかし、私はこれをやり遂げる方法については全く考えていませんし、pg-promiseのドキュメントは役に立ちませんでした。
私は過去1年間DjangoでWebプログラミングしていましたが、Node.JSに切り替えたので、私は完全な初心者のように感じます。誰かが私に手を差し伸べるか、正しい方向に私を向けることができますか?
vitaly-t、文字列の書式設定を使用して結果を変換する方法の簡単な例を私に与えることはできません。それは信じられないほど役に立つだろう。 – Fox
@Fox最良の例はここにあります:https://stackoverflow.com/questions/39805736/get-join-table-as-array-of-results-with-postgresql-nodejs –