2017-03-07 3 views
0

Ich habe APIs, die die Daten abfragt und die Ergebnisse im JSON-Format zurückgibt. Wenn ich die Abfrage innerhalb von api.get aufrufe und res.send (Zeilen) setze, funktioniert es gut, aber ich muss die gleiche Methode in verschiedenen Methoden aufrufen, also dachte ich, ich könnte es draußen schreiben und diese Methode aufrufen, wenn sie benötigt wird. aber das Ergebnis ist leer, wenn es draußen ist.NodeJs Mysql gibt leeres Ergebnis zurück

var customerRows[] 
app.get('/customers', function(req, res) { 
    getCustomers(); 
    res.json({ 
     customers : customerRows 
    }); 
}); 

function getCustomersQuery(callback) { 
    var customersDataQuery = mysqlConnection.query('SELECT * from customer_info', function(err, rows, fields) { 
     if (!err) { 
      if (rows) { 
       callback(null, rows); 
      } 
     } else { 
      callback(err, null); 
      console.log('Error while performing Query.'); 
     } 
    }); 
} 

function getCustomers() { 
    getCustomersQuery(function(err, result) { 
     if (err) { 
      console.log(err); 
     } else { 
      customerRows.push(result); 
      console.log(customerRows)//prints values 
     } 
    }); 
    console.log("Result : "+customerRows);//prints empty 
} 

Ich versuche, das Ergebnis meiner globale Variable customerRows zu setzen, aber es gibt leer.

+0

Vielleicht sollten Sie Konzept der asynchronen Funktion .. letzte console.log kennen, bevor Durchführung mysql query –

Antwort

0

Verwendung dieser Code

app.get('/customers', function(req, res) {  
    getCustomersQuery(function(err, result) { 
     if (err) { 
      console.log(err); 
     }   
     res.json({ 
      customers : result 
     }); 
    }); 
}); 

function getCustomersQuery(callback) { 
    var customersDataQuery = mysqlConnection.query('SELECT * from customer_info', function(err, rows, fields) { 
     if (!err) { 
      if (rows) { 
       callback(null, rows); 
      } 
     } else { 
      callback(err, null); 
      console.log('Error while performing Query.'); 
     } 
    }); 
} 
+0

abgefeuert werden ich markiert diese als keine Antwort, weil es keine Antwort - es ist nur ein bisschen Code. Ich habe gesehen, dass Dinge für weniger entfernt werden, wie ist das eine akzeptable Antwort? –

Verwandte Themen