2016-03-31 6 views
0

app.jsузел JS - Узел MySQL - результат не определен

MyDatabase = require("./mysql"); 
... 
var availableRooms = mydb.checkRoomStatus(); 
console.log("Rooms " + availableRooms); 
//undefined. 

mysql.js

MyDatabase.prototype.checkRoomStatus = function() { 
this.con.query('SELECT * FROM rooms WHERE status = "open" LIMIT 1',function(err,rows){ 
    if(err) throw err; 

    console.log('Data received from Db:\n'); 
    console.log(rows); // results are coming here. 
    return rows; 
}); 

}

Первый console.log выводит "неопределенное" для переменной availableRooms ,
Я думаю, что я должен использовать функцию обратного вызова для такого запроса.
Но я не знаю, как его использовать. Когда я ищу в Интернете, я не найду никого, использующего отдельный файл для mysql, чтобы получить результаты обратного вызова.

+1

вы можете дать ссылку на точный пакет лимфоузлов MySQL, который вы используете? есть много, поэтому, чтобы избежать путаницы, прежде чем люди начнут отвечать. –

+0

@ParthapratimNeog Я не думаю, что это поможет, так как вы можете увидеть, как OP пытается вернуть результат от обратного вызова. – Ziki

+0

Возможный дубликат [Как вернуть ответ от асинхронного вызова?] (Http: // stackoverflow. com/questions/14220321/how-do-i-return-the-response-from-a-асинхронный вызов) – Ziki

ответ

2

Чтобы вернуть свои строки, вам нужно вернуть return callback(rows), и вы должны поймать его в своем callback. Надеюсь, это ясно. Попробуйте это и посмотрите, работает ли это.

изменить ваш MySQL код

MyDatabase.prototype.checkRoomStatus = function(callback) { 
this.con.query('SELECT * FROM rooms WHERE status = "open" LIMIT 1',function(err,rows){ 
    if(err) throw err; 

    console.log('Data received from Db:\n'); 
    console.log(rows); // results are coming here. 
    return callback(rows); 
}); 

Сейчас в app.js

MyDatabase = require("./mysql"); 
... 
mydb.checkRoomStatus(function(res){ 
    var availableRooms = res; 
    console.log("Rooms " + availableRooms); 
}); 
+0

Я пытаюсь сделать то же самое, но в mysql.js он говорит, что MyDatabase не определен, где именно он создан? и где появился объект mydb? –