node.js 및 Redis (Redis 패키지)를 사용하여 로그인 시스템을 만들고 싶지만 입력 데이터를 데이터베이스 데이터와 비교할 때마다 혼란스러운 결과가 발생합니다.로그인 시스템 - Node.js 및 Redis
exports.userLogin = (username, password, errMsg, successMsg, res) => {
client.keys("user*", (err, replies) => {
for (let i = 0; i < replies.length; i++) {
client.hgetall(replies[i], (err, value) => {
if (value.user === username && value.password === password) {
successMsg(username, res);
} else {
console.log("length: ", replies.length - 1);
console.log("i: ", i);
if(replies[i] === replies.length - 1) {
errMsg(res);
} else {
console.log("else statement: ", replies[i] === replies.length - 1);
return true;
}
}
});
}
})
)}
: 나는 로그인과 암호를 확인 더하기 그것은에 errmsg 기능을 두 번째 예제를 실행하지 않는 경우에도 거짓 점점 계속
const Redis = require("redis");
const client = Redis.createClient();
exports.userLogin = (username, password, errMsg, successMsg, res) => {
client.keys("user*", (err, replies) => {
let isFound = false;
for (let i = 0; i < replies.length; i++) {
client.hgetall(replies[i], (err, value) => {
if (value.user === username && value.password === password) {
isFound = true;
}
});
}
console.log(isFound);
if (isFound) {
successMsg(username, res);
} else {
errMsg(res);
}
})
)}
: 이것은 첫 번째 방법입니다 패스워드와 로그인은 정상이지만, 페이지가 뭔가를 불러오고 errMsg 함수를 실행하지 않기 때문에 올바르지 않으면 작동하지 않습니다. 아이디어가 있습니까?
'hgetall'은 비동기 호출이므로 결과를 얻기 전에'isFound'에 대한 테스트가 수행됩니다. –
@ t.niese 어떻게 작동하도록이 코드를 수정할 수 있습니까? – miqezjo
다른 문제는 루프에서 비동기 호출을 생성한다는 것입니다. –