Node.js未处理的承诺拒绝

纳博特

我正在尝试使用node.js进行登录,passport但是当不在数据库中的用户名尝试登录时出现问题。我收到以下错误(node:9708) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: deferred.resolve is not a function

登录功能:

exports.login = function(username, password) {
    var deferred = Q.defer;

    MongoClient.connect(mongodbUrl, function(err, db) {
        var collection = db.collection('users');

        collection.findOne({'username' : username}).then(function(result) {
            if (result === null) {
                console.log('User not found:', username);
                deferred.resolve(false);
            } else {
                var hash = result.password;
                console.log('User found:', username);

                if (bcrypt.compareSync(password, hash)) {
                    deferred.resolve(result);
                } else {
                    console.log('Authentication for ' + username + 'failed');
                    deferred.resolve(false);
                }
            }

            db.close();
        });
    }).catch(err => console.log(err));

    return deferred.promise;
};

Passport.use功能:

passport.use('local-signin', new LocalStrategy({passReqToCallback : true}, function(req, username, password, done) {
    funct.login(username, password).then(function(user) {
        if (user) {
            console.log(user.username + 'logged in');
            req.session.success = 'Welcome, ' + user.username + '!';
            done(null, user);
        }

        if (!user) {
            console.log('Failed login attempt');
            req.session.error = 'Your Password or Username is incorrect! Please try again.';
            done(null, user);
        }
    }).fail(function(err) {
        console.log(err.body);
    });
}));
大火349

承诺可以解决或拒绝。您必须为这两种情况编程。在代码末尾添加.catch,如下所示:

collection.findOne({'username' : username}).then().catch(err => console.log(err))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

UnhandledPromiseRejectionWarning:未处理的承诺拒绝 - Node.js

缓存承诺导致Node.js中未处理的承诺被拒绝

UnhandledPromiseRejectionWarning:Node.JS中未处理的承诺拒绝(拒绝ID:1)

如何在Node.js ExpressJS中的异步对象方法中处理未处理的承诺拒绝?

是什么确定在node.js(控制台/脚本)中未处理承诺拒绝?

未在Node.js中定义未处理的承诺拒绝错误值

UnhandledPromiseRejectionWarning:来自 Node JS 的未处理的承诺拒绝,React 中的预检响应

Node.js未处理的拒绝错误

(节点:20732)[DEP0018] DeprecationWarning:已弃用未处理的承诺拒绝。将来在Node.js中

如何将Node.js连接到现有的Postgres?错误:未处理的承诺被拒绝

未处理的 Promise 拒绝警告 - Node.js

Node 服务器中未处理的承诺拒绝,仅在 Heroku 上,在本地工作

未处理的承诺拒绝。这个错误源于抛出一个异步函数...... Node + Puppeteer

尽管尝试使用Node12.x捕获AWS Lambda,但仍未处理承诺的拒绝

Node.JS-处理某些类型的承诺拒绝?

如何处理Node错误“未处理的承诺被拒绝”,以便无论如何都能加载该页面?

浏览器是否仍然默默地吞并未处理的拒绝承诺?那Node呢?

捕获到的承诺中未处理的捕获错误-Node.js

在 BigQuery 中运行 node.js 文件时如何停止未处理的承诺错误?

Node Js (Sequelize) - 未处理的拒绝 SequelizeDatabaseError:“字段列表”中的未知列“id”

Node Js 迁移问题(未处理的拒绝 SequelizeDatabaseError Specified key was too long )

调试未处理的承诺拒绝

节点。未处理的承诺拒绝

未处理的承诺拒绝AVA

未处理的承诺拒绝 nodejs

在node.js中使用async / await处理承诺拒绝的正确方法是什么?

了解node.js中的承诺拒绝

node.js 中未处理的错误

Node.js未处理的“错误”事件