2017-02-08 2 views
0

Я хочу получить переменную из таблицы MySQL и на основе значения переменной открыть окно веб-приложения. Я закодировал запрос на соединение MySQL на сервере в конце приложения. Поэтому, когда соединение с сервером установлено, вышеупомянутый поток может произойти. Но после получения значения переменной код не запускается вперёд и в режиме отладки курсор заканчивается как возвращаемое значение y. Кто-то, пожалуйста, помогите решить проблему. Заранее спасибо.Невозможно запустить команду js после запроса MySQL

#!/usr/bin/env node 
'use strict'; 

require('dotenv').config({silent: true}); 

var server = require('./app'); 
var port = process.env.PORT || process.env.VCAP_APP_PORT || 8000; 
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; 

var def = function(){ 
server.listen(port, function() { 
    // eslint-disable-next-line 
    console.log('Server running on port: %d', port); 
    return; 
}); 
} 

var X; 
global.x = X; 

var mysql = require('mysql'); 
var mysqlPool = mysql.createPool({ 
    host  : 'localhost', 
    user  : 'root', 
    password : '', 
    database : 'emp', 
    debug : true 
}); 

var abc = function(){ 
mysqlPool.getConnection(function(err, connection) { 
    connection.query("select exp from empid where id= 12345", function(err, rows){ 
    if(err) { 
    throw err; 
    } else { 
    var y = rows[0].exp; 
    } 
    //connection.release(); 
    *return y;* 
    }); 
}); 
} 

def(); 
abc(); 

if(abc > 2) { 
    window.location.href = "http://www.w3schools.com"; 
} 
+0

Вы получаете значение в строках [0] .exp; ? – Deep

+0

Да, я получаю значение в y по мере необходимости. это просто код не работает после return y statement, который я намеревался сделать – sourabh

+0

Спасибо baao & rsp, который сработал, но теперь у меня есть еще одна проблема – sourabh

ответ

0

Вы не можете вернуть значение из функции обратного вызова, потому что ваша abc() функции возвращает путь до того, как запустить ваше return заявления - обратите внимание, что return возвращается из функции, в которой он был использован, а не какой-то внешняя функция.

Вы можете вернуть обещание или использовать обратный вызов, если хотите использовать это значение вне обработчика запросов БД.

Смотрите ответы на эти вопросы подробно:

+0

Спасибо rsp, который помог, но теперь у меня другая проблема. Сокет закрывается после открытия URL-адреса. Я хочу, чтобы сокет был открыт, чтобы я мог постоянно контролировать БД и всплывать url на основе значения DB. Пожалуйста помоги. Thanks.var аЬс = функция (обратный вызов) { mysqlPool.getConnection (функция (ERR, соединение) { connection.query (QRY, функция (ERR, строки) { , если (ERR) { бросок ERR; } еще { var y = rows [0] .exp; console.log (y); callback (y); } }); }); } def(); ABC (функция (у) { console.log (у); , если (у> 2) { OPN ('http://www.w3schools.com');} }); – sourabh

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