2014-10-12 4 views
0

Я пытаюсь передать значение из sqlite3 функции с Node.js, но я получаю всегда undefined.sqlite3 и узел-JS возвращает неопределенное

Вот мой код:

var sqlite3 = require('sqlite3').verbose(); 
var db = new sqlite3.Database('./rolety.db'); 
var row; 

db.get("SELECT open_hour, open_minut FROM autorun_open", function(err, row) { 
    console.log(row.open_hour); 
    console.log(row.open_minut); 
    row = row.open_hour; 
}); 

console.log("R:" + row); 

Насколько, я могу видеть его запустить асинхронно, потому что я получаю что-то вроде этого:

Row: undefined 
6 
45 

Последняя строка моего кода выполняется до того sql результат. Что мне делать, чтобы получить правильное значение из sql?

ответ

2

Вам нужно добавить функцию обратного вызова, как это:

db.get("SELECT open_hour, open_minut FROM autorun_open", function(err, row) { 
    console.log(row.open_hour); 
    console.log(row.open_minut); 
    row = row.open_hour; 
    callback(row); 
}); 

function callback(row) { 
    console.log("R:" + row); 
} 

Хитрость заключается в том, что функция обратного вызова вызывается после Командлет Get является успешным или нет. На следующем шаге вы должны подумать об обработке ошибок, если ошибка сбоя.

+0

THX, который отлично работает. – user2104455

+0

Спасибо. Пожалуйста, отметьте мой ответ как правильный ответ. – Freddy

Смежные вопросы