0

I am using https://github.com/felixge/node-mysql and everytime a mysql query throw an error, for example if a row does not exist. The node server crashes.

connection.connect();

connection.query('SELECT * from table1 where id = 2',  function(err, rows, fields) {
  if (err) console.log(err);
  if (rows[0]) { 
    console.log('The result is  ', rows[0].user);
  }
});
connection.end();

How do I simply print the errors to the page rather than crash the server.

h00j
  • 308
  • 1
  • 7
  • 18

2 Answers2

1

If an error occurs, your code console.log's it but tries to access rows[0] anyway. In case of errors rows will be undefined so rows[0] will trigger a new error.

Easily fixed with an else in combination with a length check:

if (err) {
  console.log(err);
} else if (rows.length) { 
  console.log('The result is  ', rows[0].user);
} else {
  console.log("Query didn't return any results.");
}
robertklep
  • 198,204
  • 35
  • 394
  • 381
0

I prefer to use the return statement:

connection.connect();

connection.query('SELECT * from table1 where id = 2',  function(err, rows, fields) {
  if (err) return console.log(err);

  if (rows[0]) { 
    console.log('The result is  ', rows[0].user);
  }
});
connection.end();

This is cleaner IMO and guarantees that I wont leave anything out of an if statement block where it shouldn't.

Sam
  • 6,414
  • 11
  • 46
  • 61