多个用户连接到sql server

时间:2016-06-24 06:52:09

标签: javascript sql-server node.js

我使用Node js express连接到远程SQL Server。它从服务器检索数据并绘制条形图。我使用以下包

"body-parser": "^1.15.1",
"d3": "^3.5.17",
"express": "^4.13.4",
"jquery": "^2.2.4",
"jsdom": "^9.2.1",
"mssql": "^3.3.0",
"require": "^2.4.20"

我有一个包含输入字段的HTML登录页面。输入通过ajax发送给/ user。这是我用来向用户显示他提供的凭据是否正确的代码。

app.post('/user', function (req, res, body) {
uid = req.body.uid;
pwd = req.body.pwd;
 config = 'Server={IPv4 of server};Database=DbName;Uid=domain\\' + uid + ';Pwd=' + pwd;
 dbConn = new sql.Connection(config);

dbConn.connect().then(function () {                                         

    var request = new sql.Request(dbConn);
    // alert

}).catch(function (err) {
   //  alert
});
});

其中Uid和Pwd是用户的登录凭据。对于有权访问数据库的所有用户,将建立连接并显示图表。

这是收集图表所需数据并将其发送到HTML页面的代码

app.get('/re', function (req, res) {


dbConn.connect().then(function () {                                         //using promises instead of callbacks(onceconnect() is done), then go to then()

    var request = new sql.Request(dbConn);

    request.query("select * from books;").then(function (recordSet) {         //once query is executed, then go to then()

        res.send(recordSet);
        dbConn.close();                                                      //close connection
    }).catch(function (err) {

        console.log(err);
        dbConn.close();
    });
}).catch(function (err) {

    console.log(err);
});

});

当不同PC上的多个用户同时尝试访问它时,会出现以下问题。

1。)如果用户A已登录并正在查看图表,则用户B也可以在不登录的情况下查看同一图表,只需浏览该页面

2。)如果用户A更改查询以仅查看图表的子集,则用户B被迫在刷新时看到该更改

3.)当userA关闭连接,即注销时,用户B再也看不到页面了。

似乎只建立了一个连接。无论用户B是否已登录,他都会看到该页面。

当用户A,B连续使用它(一个接一个)时,它可以根据需要使用。

请帮帮我。我完全不知道如何继续前进。

编辑1:发生这一切是因为我的变量配置一次只能保存一个UID和PWD。因此,即使用户B未通过用户A的凭证登录,用户B也可以查看图表

1 个答案:

答案 0 :(得分:0)

我找到了答案 - 问题是因为我没有在我的代码中使用会话。当我开始在节点js中使用快速会话时,它按照Session management in Nodejs

中的预期工作