Добрый день!
Не могу понять как вернуть результат выполнения SELECT-а из callback-функции query.
Суть в следующем: есть некий сервер на node.js который принимает POST-запросы от клиента и в соответствии с этим производит те или иные действия с базой данных mysql. С записью и апдейтом в базу разобрался - все работает. Но не могу понять как вернуть выборку по селекту из таблицы в базе. Для наглядности приведу часть кода:
function accept(req, res) {
if (req.method == "POST") {
var requestBody = '';
req.on('data', function(data) {
requestBody += data;
});
req.on('end', function() {
var formData = qs.parse(requestBody);
var login = formData.login;
//Далее нужно проверить существование записи в БД
//и если такой нет то сделать новую запись в БД, иначе обновить существующую
selectDB(login);
// Здесь нужно получить результат чтобы запустить условие
if (selectDB(login)) ... updateDB(login,score);
else insertDB(login,score);
....
});
// И есть некая функия selectDB
function selectDB(param1) {
var connection = mysql.createConnection({
host : '',
user : '',
password : '',
database : ''
});
connection.connect();
connection.query(
{sql: 'SELECT * from users where login = ?',
values: [param1]
},
function(err, results, fields) {
if (err) return err;
// console.log(results) - возвращает результат выполения запроса в БД, но return results - возвращает undefined
return results;
}
);
connection.end();
}
Как мне в function accept получить значение function selectDB?
Извиняюсь за глупый вопрос - с javascript пока на вы и многих вещей не понимаю. Полагаю connection.query вернет некий объект, но я смотрел его вывод в консоли node.js и не обнаружил в нем метода, который возвращает результат callback-функции.