2017-09-25 5 views
0

Je veux retourner le résultat de MySQL dans une variable. J'ai essayé ce qui suit, mais cela ne fonctionne pas, car j'obtiens une variable vide.Retourne le résultat MySQL après l'exécution de la requête en utilisant node.js

const mysql = require('mysql'); 
const db = require('../config/db'); 
const connection = mysql.createConnection(db);  

module.exports = class Categories { 
    constructor (res) { 
     this.res = res; 
    } 

    getCategories() { 
     connection.query("SELECT * FROM `categories`", (error, results, fields) => { 
      if (error) throw error; 
      this.pushResult(results); 
     }); 
    } 

    pushResult(value) { 
     this.res = value; 
     return this.res; 
    } 
}; 
+0

vous déplacer en this.pushResult(); 'l'intérieur du rappel –

+0

@RolandStarke, Désolé, j'ai mis à jour mon code. – CairoCoder

+0

@RolandStarke ayant toujours le problème. – CairoCoder

Répondre

1

Juste fait une fonction de rappel d'abord:

var Categories = { 

    getCategories: function (callback) { 
     connection.query("SELECT * FROM `categories`", (error, results, fields) => { 
      if(error) { console.log(err); callback(true); return; } 
      callback(false, results); 
     }); 
    } 

}; 

Et puis utilisé avec la route:

app.get('/api/get_categories', (req, res) => { 

    categories.getCategories(function (error, results) { 
     if(error) { res.send(500, "Server Error"); return; } 
     // Respond with results as JSON 
     res.send(results); 
    }); 

});