Variable not being changed inside callback

Viewed 21
let dbResult

//insert marker into db
await pool.query(
    'INSERT INTO markers (title, description, creator, active) VALUES ($1, $2, $3, $4) RETURNING *',
    [title, description, creator, active],
    (error, results) => {
        if (error) {
            throw error
        }
        dbResult = results;
    });

console.log(dbResult)

Not really sure why but the dbResult variable is not being changed. I'm not very experienced with JavaScript, can anyone explain why this is happening.

1 Answers

You have to log it when it is changed:

let dbResult

//insert marker into db
await pool.query(
    'INSERT INTO markers (title, description, creator, active) VALUES ($1, $2, $3, $4) RETURNING *',
    [title, description, creator, active],
    (error, results) => {
        if (error) {
            throw error
        }
        dbResult = results;
        console.log(dbResult)
    });

This is because the callback function (error, results) => ... gets triggered after the line console.log(dbResult) and so you are printing out the outdated value.

You might want to do some research on callback functions and async/await in JavaScript to get a better understanding.

Related