-
-
Notifications
You must be signed in to change notification settings - Fork 1
JSON Sugars
Oxford Harrison edited this page Nov 19, 2024
·
16 revisions
💥 Model structure right within the language!
While you could stitch relevant SQL functions together to structure your output data, Linked QL supports special JSON-like syntaxes that abstract the rough work.
Syntax | Syntax | Equivalent Function (PostgreSQL) | Equivalent Function (MySQL) |
---|---|---|---|
Modelling objects | { expr1, expr2 AS key, ... } |
JSON_BUILD_OBJECT() |
JSON_OBJECT() |
Modelling arrays | [ expr1, expr2 ] |
JSON_BUILD_ARRAY() |
JSON_ARRAY() |
Aggregating expressions | expr1[] |
JSON_AGG() |
JSON_ARRAYAGG() |
// Model objects and arrays
const result = await client.query(
`SELECT
name,
email,
{ email, phone AS mobile } AS format1,
[ email, phone ] AS format2
FROM users`
);
console.log(result);
Console
[ { name: 'John Doe', email: 'johndoed@example.com', format1: { email: 'johndoed@example.com', mobile: '(555) 123-4567' }, format2: [ 'johndoed@example.com', '(555) 123-4567' ] }, { name: 'Alice Blue', email: 'aliceblue@example.com', format1: { email: 'aliceblue@example.com', mobile: '(888) 123-4567' }, format2: [ 'aliceblue@example.com', '(888) 123-4567' ] } ]
// Aggregate a column
const result = await client.query(
`SELECT
email[] as emails
FROM users`
);
console.log(result);
Console
[ { emails: [ 'jd@example.com', 'ab@example.com' ] } ]