如何通知用户,他们已经输入了重复的条目



我使用mongodb来存储详细信息。我知道这个问题已经被问过了,但是解决方案对我来说不起作用。

const userSchema = {
email: {type: String, unique: true},
password: String
};

我使用了我上面输入的模式,它有点工作,我的意思是,它不允许重复的条目插入到数据库中。但是我的问题是,它没有得到任何错误,所以我不能使用下面的代码。

if(err){
console.log("Repeated record");
}

由于没有错误,页面继续加载,大约2-3分钟,最后显示"该页面不工作,本地主机没有发送任何数据"。谁能让我知道我应该采取什么方法来实现这个目标?

编辑:这是服务器代码:
app.get("/", function(req, res){
res.render("home");
});
app.get("/login", function(req, res){
res.render("login");
});
app.get("/register", function(req, res){
res.render("register");
});
app.post("/register", function(req, res){
const newUser = new User({
email: req.body.username,
password: req.body.password
});
newUser.save(function(err){
if(err){
console.log(err);
}else{
res.render("login");
};
});
});
app.post("/login", function(req, res){
const username = req.body.username;
const password = req.body.password;
User.findOne({email: username}, function(err, foundUser){
if(err){
console.log(err);
}else{
if(foundUser){
if(foundUser.password == password){
res.sendFile(__dirname + "/public/upload.html");
}
}
}
});
});

我已经安装了express, body-parser和ejs。Home、login和register是扩展名为.ejs的模板。

谢谢。

如果发生错误或其他事情,您必须向客户端发送响应。否则你的函数不会发送任何数据。我在代码中添加了一些注释行,标记为--> Here。在这些函数中使用res.send()res.render()向客户端发送响应。

同时添加状态码可能有助于理解错误码(只是建议)。

app.post("/register", function(req, res){
const newUser = new User({
email: req.body.username,
password: req.body.password
});
newUser.save(function(err){
if(err){
console.log(err);
// res.status(422).send(err) or res.render(errorPage) --> Here
}else{
res.render("login");
};
});
});
app.post("/login", function(req, res){
const username = req.body.username;
const password = req.body.password;
User.findOne({email: username}, function(err, foundUser){
if(err){
console.log(err);
// res.status(500).send(err) or res.render(errorPage); --> Here 
}else{
if(foundUser){
if(foundUser.password == password){
res.sendFile(__dirname + "/public/upload.html");
} else {
// res.status(401).send('Some error message') res.render(errorPage); --> And here
}
}
}
});
});

最新更新