我正在使用Node JS服务器和firebird数据库开发Cordova应用程序。 这两个数据库存在,我可以通过isql-fb连接它。
当我通过手机创建第一个连接时,连接工作,以及在此连接上进行的查询。
但是,当我创建第二个连接时,它不起作用。
这是我的代码:
连接表,将连接重组为["用户名",连接]表
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服务器上,我有这个" route" :
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(username)的for循环中。如果有人试图建立连接表,我在这里发布这篇文章。
谢谢大家。
答案 0 :(得分:1)
我发现了问题。我觉得我好笨。但现在我们知道连接的创建就是这样的。 这是任何人都无法做到的最尴尬的错误:
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.
};
谢谢大家的时间和帮助:)。