我正在用express和mongodb开发Nodejs应用程序。我将数据添加到mongodb但是当我尝试查找方法时。它不起作用。无法捕捉异常。所以我的代码如下所示:
var routes = function (app) {
app.locals.error = null;
app.get('/login', function (req, res) {
return res.render(__dirname + "/views/login", {
title: 'Giriş',
stylesheet: 'login'
});
});
var mongoose = require('mongoose');
mongoose.connect("mongodb://localhost/fuatblog");
var UserSchema = new mongoose.Schema({
name: String,
email: String,
password: String,
age: Number
}),
Users = mongoose.model('Users', UserSchema);
app.post('/sessions', function (req, res) {
console.log(req.body.user.email);
console.log(req.body.user.password);
Users.find({
email: req.body.user.email,
password: req.body.user.password
}, function (err, docs) {
if (err) {
console.log('User Not Found');
res.status(400);
return res.render(__dirname + "/views/login", {
title: 'Giriş',
stylesheet: 'login',
error: 'Email or password is wrong.'
});
}
console.log('User found');
req.session.email = docs[0].email;
console.log(req.session.email);
});
return res.redirect('/Management/Index');
});
};
module.exports = routes;
我从login.jade向/ sessions发布了错误的电子邮件和错误的密码数据。 这段代码应该运行:
if (err) {
console.log('User Not Found');
res.status(400);
return res.render(__dirname + "/views/login", {
title: 'Giriş',
stylesheet: 'login',
error: 'Email or password is wrong.'
});
但它始终通过这个if语句。因此'if'内部没有运行。 'err'变量总是假的。为什么?我的mongodb数据库中没有此用户使用此电子邮件和密码。需要建议。抱歉语法。对不起语法
答案 0 :(得分:2)
如果查询与数据库中的任何文档都不匹配,则不是错误;你必须检查docs
以查看是否有任何匹配的文件:
if (! docs.length) {
// no results...
}
err
参数仅在执行查询期间发生错误的情况下设置(您传递了无效查询,数据库处于脱机状态等)。
答案 1 :(得分:1)
我认为当你试图在你的数据库中找到一个条目并且找不到它时,这不会产生错误,它只会返回一个空的结果集
因此,您可以检查返回结果的大小,而不是检查是否存在错误
if(docs.length == 0){
console.log('Not found')
}