2017-02-08 48 views
0

我想從MySQL表中獲取一個變量,並根據變量值打開我的web應用程序窗口。我在應用程序服務器端編寫了MySQL連接查詢。所以當服務器連接建立時,上面提到的流程可能會發生。 但是在獲取變量值後,代碼不會向前運行,並且在調試模式下,遊標將以y的返回值結束。 有人請幫忙解決這個問題。提前致謝。無法在MySQL查詢後運行js命令

#!/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的值。這只是代碼沒有運行後,返回y語句,我打算 – sourabh

+0

感謝baao&rsp工作,但現在我有另一個問題 – sourabh

回答

0

不能從回調返回值,因爲你的abc()功能您return語句運行之前返回的方式 - 請注意,從功能return返回所用,而不是一些外部函數。

如果您想在數據庫查詢處理程序之外使用該值,則可以返回承諾或使用回調。

見這些問題的答案的詳細信息:

+0

感謝rsp,幫助,但現在我有另一個問題。該URL在打開後關閉。我想打開套接字以便我可以連續監視數據庫並根據DB值彈出url。請幫忙。 Thanks.var abc = function(callback)mysqlPool.getConnection(function(err,connection){connection.query(qry,function(err,rows)if(err){err} {err} {err { } else { var y = rows [0] .exp; console.log(y); callback(y); } });; }); } def(); (y> 2){ opn('http://www.w3schools.com'); } }); – sourabh