2017-08-03 3 views
2

Ich entwickle eine Cordova-Anwendung mit einem Node JS-Server und Firebird-Datenbanken. Die beiden Datenbanken existieren und ich kann über isql-fb verbinden.Verbindung erstellt, aber nicht gefunden

Wenn ich eine erste Verbindung über ein Telefon erstelle, funktioniert die Verbindung genauso wie die Abfragen, die für diese Verbindung ausgeführt werden.

Wenn ich jedoch eine zweite Verbindung erstellen, funktioniert es nicht.

Hier ist mein Code:

Anschlusstabelle, die die Verbindungen als [ "username", connexion] Tabellen

var connectionTable = []; 

Funktion, die auf Datenbanken verbindet umgruppiert und fügt die Verbindungen in Connection:

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 
}; 

Funktion, die die gewünschte Verbindung über den eingegebenen Benutzernamen zurückgibt:

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;} 
} 

};

Und dann, auf meinem Knoten JS-Server, ich habe diesen „Weg“:

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); 
}); 

Also für die erste Verbindung zu einer Datenbank durchgeführt, es funktioniert sehr gut, und mir zurückgibt die Werte seines Datenbank.

Allerdings ist es nicht für die zweite andere Verbindung und es heißt, es ist gleich 0, also nehme ich an, es fand es nicht in GetConnection.

Ich verstehe nicht, warum es für einen und nicht anderen ... Ich habe auch versucht, zu mehreren verschiedenen Verbindungen früher, nicht mit diesem Prozess und es funktioniert. Das Problem ist also nicht, dass wir nicht mehrere Verbindungen auf demselben NodeJS-Server haben können, aber dass wir in diesem Zusammenhang nicht den Guten finden können ...

Weiß jemand, was ich falsch mache?

Jede Hilfe wäre sehr dankbar, danke.

- EDIT -

Die Verbindungen gearbeitet, um diese Art und Weise. Der Fehler war in der for-Schleife von getConnection (Benutzername). Ich lasse diesen Beitrag hier jedoch, wenn jemand versucht, eine Tabelle von Verbindungen zu machen.

Danke euch allen.

+1

so Ihre '' usernameAsking ist rechts (existiert in dem Array) und Ihre 2-Protokolle helfen show 'Nummer' und' 0'? – Kaddath

+0

Ja, hier ist es, was die Konsole zeigt: in beiden Fällen: –

+0

zuerst: checkAccount avant Körper {username: 'BARBARA'} usernameAsking = BARBARA Objekt Verbindung {inAsyncCall: false, inTransaction: false, verbunden: true} Verbindung gefunden [{/ * korrekten Daten angezeigt * /}] string: [{/ * auch korrekte Daten * /}] checkAccount beendet –

Antwort

1

Ich habe das Problem gefunden. Ich fühle mich dumm. Aber jetzt wissen wir, dass die Erstellung von Verbindungen auf diese Weise funktioniert. ist hier die meisten Fehler ankward niemand jemals tun könnte:

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. 

}; 

Ihnen allen für Ihre Zeit danken und :)

Verwandte Themen