web-dev-qa-db-fra.com

Dans la requête mysql node.js, vérifiez si aucune correspondance n'a été trouvée

Comment puis-je vérifier si aucune correspondance n'a été trouvée dans mysql (node.js)?

mysql.query("select * from table1 where name = 'abcd'", function(error, result, field) {
    if(error) {
        exist(error); //No error
    } else if(result) {
        console.log(result);  //displays '[]'
        exist(null, result);
    } else {
        exist(null, null); //It is never execute
    }
});
function exist(error, result) {
    if(result)
        console.log("Test:"+result); //Executed and displays 'Test:'
}

Ma base de données ne contient pas name = 'abcd'. Alors, comment puis-je vérifier si la requête ne correspond pas?

12
Rejaul

Vous recevez un tableau vide ([]) à la suite de votre requête, car comme vous l'avez dit, votre base de données ne contient aucune ligne avec name = 'abcd'.

Quand vous faites:

if (result) {
  if (result)
    console.log("Test:" + result);

, vous entrez le if, car Javascript évalue true pour []. Jetez un œil à cet article ici , qui explique comment Javascript évalue les valeurs true et false.

Une meilleure façon de vérifier si votre tableau de résultats est vide est de faire:

if (result.length > 0) {
  if (result)
    console.log("Test:" + result);
16
Rodrigo Medeiros