1

I have this code

app.get("/api/tables", function(req, res) {

    function retrieve() {
        connection.query("SELECT * FROM reservations", function(err, res) {
            if (err) throw err;
            return res;
        });
    }

    res = retrieve();
    console.log(res,"results");

    return res;
});

It selects everything from the table, then I set a res for express.js function to be equal to that function, but it comes out undefined. How can I fix it?

j3ff
  • 5,719
  • 8
  • 38
  • 51
OlegArsyonov
  • 1,251
  • 1
  • 14
  • 18

1 Answers1

0

These node.js operations are asynchronous, but you're treating them as synchronous. Your retrieve() function returns to its caller before the query runs, and before the callback function runs.

You need something like this:

app.get("/api/tables", function(req, res) {
    function retrieve(){
        connection.query("SELECT * FROM reservations", function(err, resultset) {
            if (err) {
                console.log (err);
                res.status(500).send('query error')l
            }
            else {
                console.log (resultset);
                res.status(200).send(JSON.stringify(resultset);
            }
        });
     }
     retrieve();
}

The point is to send the result of the query back to the requesting client from inside the callback.

O. Jones
  • 103,626
  • 17
  • 118
  • 172