我试图制作一个简单的登录/注册页面,但是我的获取代码导致错误(ERR_EMPTY_RESPONSE和TypeError:无法获取)。我尝试了console.log(“ can login”)来查看代码是否会返回某些内容,确认它可以工作,但是,两个函数均未返回任何内容。我是新来的,所以请怜悯我
router.post("/register", (req, res) => {
console.log(JSON.stringify(req.body))
let {username, password} = req.body;
let err = validate.username(username);
if(err) throw err;
err = validate.password(password);
if(err) throw err;
db.collection("users").find({username: username}), function(err, username){
if(err){
throw err;
} if(username){
console.log(username);
console.log("Username in use!");
} else {
console.log("Not in use!");
db.collection("users").insertOne({ "username": username.value, "password": password.value });
}
}
});
router.post("/login", (req, res) => {
console.log(JSON.stringify(req.body))
let {username, email, password} = req.body;
db.collection("users").find({username: username, password: password}), function(err, results){
if(err){
throw err;
} if(results.length > 0){
console.log("Can login");
} else {
throw("Username and/or Password is incorrect!");
}
}
});
<script>
function register() {
let data = {
username: document.querySelector("#user").value,
password: document.querySelector("#pass").value,
}
console.log(JSON.stringify(data))
fetch("/api/register", {
method: "POST",
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify(data),
}).then((res) => {
console.log(res.json());
});
}
function login() {
let data = {
username: document.querySelector("#userlogin").value,
password: document.querySelector("#passlogin").value,
}
fetch("/api/login", {
method: "POST",
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify(data),
}).then((res) => {
console.log(res.json());
});
}
</script>
</head>
<body>
<h1>Register:</h1>
<input autocomplete="username" id = "user" placeholder="username">
<input autocomplete="current-password" id = "pass" type = "password "placeholder="password">
<button onclick="register()">Register</button>
<br>
<br>
<br>
<br>
<input autocomplete="username" id = "userlogin" placeholder="username">
<input autocomplete="current-password" id = "passlogin" type = "password" placeholder="password">
<button onclick="login()">Login</button>
</body>
任何帮助是极大的赞赏!谢谢 :)
您没有在login
-handler中发送任何响应,因此在客户端会收到一个空响应错误。将其更改为:
router.post("/login", (req, res) => {
console.log(JSON.stringify(req.body))
let {username, email, password} = req.body;
db.collection("users").find({username: username, password: password}), function(err, results){
if(err){
res.status(500).json({errorMsg: err.message});
} else if(results.length > 0){
res.json({ // send whatever you need here });
} else {
res.status(401).json({errorMsg: "wrong user/password"});
}
}
});
在客户端代码中,您还应该处理错误情况:
fetch("/api/login", { ... })
.then((res) => {
console.log(res.json());
}).catch(err) => {
// handle error here
})
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句