У меня есть функция, которая вызывает БД, чтобы что-то сделать:
function callQuery(query) {
db.query(query, (err, res) => {
if (err) {
// Error DB connecion
console.info(err.stack)
} else {
// Send back the results
return(res.rows[0])
}
})
}
Моя проблема в том, что я вызываю эту функцию:
const idUser = callQuery("INSERT INTO blablabla RETURNING *")
Мои данные успешно добавлены в БД, но idUser оказался нулевым. Должно быть res.rows[0]
Я использую этот учебник (который вместо установки переменной вызывает console.info): https://node-postgres.com/features/подключение
заранее спасибо
Это потому, что вы не возвращаете результат db.query. Добавьте return перед db.query(...), чтобы функция callQuery возвращала результат db.query.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я думаю, что это что-то из-за асинхронности
let promisess = new Promise(function(resolve, reject) {
function callQuery(query) {
db.query(query, (err, res) => {
if (err) {
// Error DB connecion
console.info(err.stack)
} else {
// Send back the results
resolve(res.rows[0])
}
})
}
});
promisess.then((res)=> {
your data in res
});
Возможный дубликат Как вернуть ответ на асинхронный вызов?