2017-08-03 15 views
2

私はNode JSサーバーとFirebirdデータベースを使用してCordovaアプリケーションを開発しています。 2つのデータベースが存在し、isql-fb経由で接続できます。接続が作成されましたが見つかりませんでした

電話で最初の接続を作成すると、この接続で行われたクエリと同様に、接続が機能します。

ただし、2番目の接続を作成すると機能しません。ここで

は私のコードです:

接続として接続を再グループ化テーブル、[「ユーザー名」、コネクション]テーブル

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

だから、データベースに行わ最初の接続のために、それは非常にうまく機能し、私にその値を返すんデータベース。

しかし、2番目の異なる接続ではなく、0と等しいので、GetConnectionで見つからなかったと仮定します。

私はそれが他のものではなく動作する理由を理解できません...私はこのプロセスではなく、いくつかの異なる接続に先に接続しようとしました。だから問題は、同じNodeJSサーバ上で複数の接続を持つことができないということではありませんが、このコンテキストでは、明らかに良いものを見つけることができません...

私が間違っていることを誰かが知っていますか?

ご協力いただきありがとうございます。ありがとうございます。

- EDIT -

接続は、この方法を働きました。エラーは、getConnection(username)のforループにあります。誰かが接続のテーブルをしようとすると、私はここにこの投稿をしましょう。

ありがとうございます。

+1

を助けるので、あなたの 'usernameAskingは'権利である(配列中に存在する)とあなたの2つのログ'number'と' 0'を表示しますか? – Kaddath

+0

はい、ここでコンソールに示すものである。いずれの場合においても: –

+0

最初:checkAccount前衛体 {ユーザー名: 'BARBARA'} usernameAsking = BARBARA オブジェクト 接続{inAsyncCall:偽、inTransaction:接続され、偽:真} 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. 

}; 

はお時間ありがとうございましたと:)

関連する問題