Mongodb发现方法不适合我

时间:2013-12-03 09:56:22

标签: node.js mongodb express

我正在用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数据库中没有此用户使用此电子邮件和密码。需要建议。抱歉语法。对不起语法

2 个答案:

答案 0 :(得分:2)

如果查询与数据库中的任何文档都不匹配,则不是错误;你必须检查docs以查看是否有任何匹配的文件:

if (! docs.length) {
  // no results...
}

err参数仅在执行查询期间发生错误的情况下设置(您传递了无效查询,数据库处于脱机状态等)。

答案 1 :(得分:1)

我认为当你试图在你的数据库中找到一个条目并且找不到它时,这不会产生错误,它只会返回一个空的结果集

因此,您可以检查返回结果的大小,而不是检查是否存在错误

if(docs.length == 0){
  console.log('Not found')
}