I'm using PostgreSQL with node-postgres: pool, Node.js and express to make some simple queries, I get in return the object wrapped with square brackets but I would like to get it without it.
The employeeDA.js:
const Pool = require("pg").Pool;
require("dotenv").config();
const pool = new Pool({
user: process.env.USER,
host: process.env.HOST,
database: process.env.DATABASE,
password: process.env.PASSWORD,
port: process.env.PORT
});
const getOneDiet = id => {
let p = new Promise((resolve, reject) => {
return pool.query(
`SELECT employee.id, employee.first_name, employee.last_name, array_agg(diet.description) AS diet_list
FROM employee_diet
INNER JOIN employee ON employee_diet.employee_id = employee.id
INNER JOIN diet ON employee_diet.diet_id = diet.id
WHERE employee.id = ${id}
GROUP BY 1`,
(error, results) => {
if (error) {
console.log(error);
reject(`ERROR: unable to get count: ${error}`);
} else {
resolve(results.rows);
}
}
);
});
return p;
};
The conrtoller.js:
const getEmployeeDiet = async (request, response) => {
const id = parseInt(request.params.id);
try {
const employeeDiet = await employeeDA.getOneDiet(id);
console.log(employeeDiet)
response.status(200).json(employeeDiet);
} catch (error) {
console.log(error);
}
}
The result:
[
{
"id": 8,
"first_name": "obos",
"last_name": "fomo",
"diet_list": [
"vegan",
"paleo"
]
}
]
I want the result to be:
{
"id": 8,
"first_name": "obos",
"last_name": "fomo",
"diet_list": [
"vegan",
"paleo"
]
}
As suggested here I saw that in SQL Server there's a command to handle this: WITHOUT_ARRAY_WRAPPER
is there something similar in PostgreSQL?
I'm looking for a better solution than resolve(results.rows[0])