I am trying to get values from my local database, but all I can get is 'Promise{<Pending>}'. Here is my code that I found on the internet. The code below should return a result object that contains table rows, but I am only getting promise.
const getFromDB = async() =>{
return await pool.query('SELECT * FROM services');
};
I am trying to get values from my local database, but all I can get is 'Promise{<Pending>}'. Here is my code that I found on the internet. The code below should return a result object that contains table rows, but I am only getting promise.
const getFromDB = async() =>{
return await pool.query('SELECT * FROM services');
};
Share
Improve this question
edited Feb 10, 2019 at 3:54
karel
5,89560 gold badges57 silver badges59 bronze badges
asked Feb 9, 2019 at 16:26
Petr MPetr M
1633 gold badges3 silver badges13 bronze badges
2
-
How dou you call
getFromDB()
? – eol Commented Feb 9, 2019 at 16:38 - Duplicate stackoverflow./questions/48626761/… ? – Hubbitus Commented Feb 9, 2019 at 22:53
1 Answer
Reset to default 6An async
function always returns a promise. The resolved value of that promise is whatever value the code in your function returns. So, to get the value out of that promise, you use either await
or .then()
;
getFromDB().then(val => {
// got value here
console.log(val);
}).catch(e => {
// error
console.log(e);
});
There is no free lunch in Javascript. A value obtained asynchronously can only be returned from a function asynchronously (via callback or promise or other similar async mechanism).
Or, if the caller itself was an async function, then you could use await
:
async function someOtherFunc() {
try {
let val = await getFromDb();
console.log(val);
} catch(e) {
// error
console.log(e);
}
}