원격 SQL Server에 연결하기 위해 노드 js express를 사용하고 있습니다. 서버에서 데이터를 검색하고 막대 그래프를 그립니다. 다음 패키지를 사용 중입니다.여러 사용자가 SQL 서버에 연결 중
"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에게 POSTED됩니다. 이 코드는 그가 제공 한 자격 증명이 맞는지 사용자에게 보여주기 위해 사용하는 코드입니다.
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 페이지를 다른 PC에서 다수의 사용자가 동시에 액세스 할 때 다음과 같은 문제가 발생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);
});
});
로 전송하는 코드입니다. 유저 (A)에 기록하고 그래프를 보는 경우
1)는, 사용자 B는 단순히 사용자 A가 쿼리를 변경하는 경우 해당 페이지
2)를 검색하여 로그인하지 않고 동일한 그래프를 볼 수있다 그래프의 하위 집합 만 보게되면 사용자 B는 새로 고침시 해당 변경 사항을 보도록 강제됩니다.
3.) userA가 연결을 닫으면 로그 오프합니다. 사용자 B는 더 이상 페이지를 볼 수 없습니다.
연결이 하나만 설정된 것 같습니다. 사용자 B가 로그인했는지 여부에 관계없이 페이지를 봅니다.
사용자 A, B가 순차적으로 (순차적으로) 사용하면 원하는대로 작동합니다.
도와주세요. 더 나아가는 방법에 대한 단서가 전혀 없습니다.
EDIT 1 : 내 변수 config가 한 번에 하나의 UID 및 PWD 만 보유 할 수 있기 때문에이 모든 일이 발생합니다. 따라서 사용자 B는 사용자 A의 자격 증명을 통해 로그인하지 않아도 그래프를 볼 수 있습니다.