2017-08-03 51 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. 

}; 

谢谢大家的时间,并帮助:)