2017-08-03 49 views
2

我正在開發一個使用Node JS服務器和firebird數據庫的Cordova應用程序。 存在兩個數據庫,我可以通過isql-fb連接它。連接已創建但未找到

當我通過手機創建第一個連接時,連接工作,以及在此連接上完成的查詢。

但是,當我創建第二個連接時,它不起作用。

這是我的代碼:

連接表,該表重新組合的連接爲[ 「用戶名」,Connexion公司]表

var connectionTable = []; 

功能連接到數據庫,並增加了在connectionTable的連接:

function connectionToDB(username, password, dbAddress){ 
    var con = fb.createConnection(); 
    con.connectSync(dbAddress, username, password, ''); 

    var newConnection = [username, con]; 
    connectionTable.push(newConnection); 

    console.log('connection finished'); //it is displayed for both connections so I think it works 
}; 

函數通過輸入的用戶名返回想要的連接:

function getConnection(username){ 
    for(x in connectionTable){ 
     if(connectionTable[x][0]==username) { 
      return connectionTable[x][1]; 
     } 
     else {console.log("No connection found with username : " + username); return 0;} 
} 

};

然後,我的節點JS服務器上,我有這樣的「路線」:

app.get('/checkAccount/:username', function(req, res){ 
    console.log("checkAccount avant body"); 
    console.log(req.params);  
    var usernameAsking = req.params.username; 

    console.log("usernameAsking = " + usernameAsking); //returns username in both cases 

    var connexionLinked = getConnection(usernameAsking); 
    console.log(typeof connexionLinked); 
    console.log(connexionLinked); 
    if(connexionLinked == 0) console.log("Problem. No linked connexion found"); 
    else console.log("connexion found"); 

    var query = connexionLinked.querySync("SELECT * from shops"); 
    var rows = query.fetchSync('all', true); 
    console.log(sys.inspect(rows)); 
    var shopNameString = JSON.stringify(rows); 
    console.log("string : " + shopNameString); 
    res.send(shopNameString); 
}); 

所以對於做數據庫中的第一個連接,它工作得很好,並不會返回我的重視數據庫。

但是,它不適用於第二個不同的連接,它表示它等於0,所以我認爲它沒有在GetConnection中找到它。

我不明白爲什麼它適用於一個,而不是另一個......我也試圖早些時候連接到幾個不同的連接,而不是這個過程,它的工作原理。所以問題不是我們不能在同一個NodeJS服務器上有多個連接,但是在這種情況下,我們找不到明顯的好連接...

有人知道我在做什麼錯嗎?

任何幫助將非常感激,謝謝。

- 編輯 -

的連接工作這種方式。錯誤發生在getConnection(用戶名)的for循環中。如果有人試圖做一個連接表,我會在這裏發表這篇文章。

謝謝大家。

+1

所以你的''usernameAsking是正確的(存在數組中)和你的2個數量級顯示「數字」和「0」? – Kaddath

+0

是的,這裏是控制檯顯示:在兩種情況下: –

+0

第一:checkAccount前衛體 {用戶名: '芭芭拉'} usernameAsking = BARBARA 對象 連接{inAsyncCall:假的,在inTransaction:假的,連:真正} Connexion公司發現 [{顯示/ *正確的數據* /}] 字符串:[{/ *正確的數據也* /}] checkAccount結束 –

回答

1

我發現了這個問題。我覺得我好笨。但是現在我們知道連接的創建就是這樣工作的。 這裏最ankward錯誤沒有人能做到:

function getConnection(username){ 
    for(x in connectionTable){ 
     console.log("connectionTable : " + connectionTable[x]); 
     console.log("connectionTable FULL: " + connectionTable); 
     console.log("connectionTable[x][0] : " + connectionTable[x][0]); 
     console.log(connectionTable.length); 
     if(connectionTable[x][0]==username) { 

      return connectionTable[x][1]; 
     } 

    } 
    console.log("No connection found with username : " + username);  
    return 0; // Error solved : The return was not supposed to be in the for loop 
       //it was only checking the first username value. 

}; 

謝謝大家的時間,並幫助:)