model.findone() 不再接受 calback

model.findone() no longer accept calback

提问人:jowww 提问时间:7/2/2023 最后编辑:jowww 更新时间:7/2/2023 访问量:21

问:

不接受不能作为回调工作的现有旧代码

passport.use(new LocalStrategy(
    {
    usernameField: 'Username',
    passwordField: 'Password'
    }, 
(username, password, callback) => {
    console.log(username + ' ' + password);
    Users.findOne({Username: username}, (error, user) => {
        if (error){
            console.log(error);
            return callback(error);
        }

        if (!user) {
            console.log('incorrect username');
            return callback(null, false, {message: "Incorrect username or password."});
        }

        console.log('finished');
        return callback(null, user);
    });
}));

将代码更改为有效的底部

passport.use(new LocalStrategy(
    {
        usernameField: 'Username',
        passwordField: 'Password'
    },
    (username, password, callback) => {
        console.log(username + ' ' + password);
        Users.findOne( {Username: username})
        .then( (user) => {
            if (!user) {
                console.log('incorrect username');
                return callback(null, false, {message: "incorrect username or password."});
            }

            console.log('finished');
            return callback(null, user);

        }).catch( (error) => {
            console.log(error);
            return callback(error);
        })
    }
))

大家好

我现在正在学习全栈开发。

我遇到一个错误,不再接受回调。model.findOne

请告知如何解决。

谷歌搜索了几篇文章,但仍然无法修复

编辑

我尝试将代码更改为以下代码,该代码正在工作。

但是由于我仍在学习,我担心我的代码在任何可能的方式上都是不正确的。

你们能帮忙看一下,并建议我的代码在从回调更改为承诺时是否正确吗?

提前致谢!!

JavaScript Promise 回调

评论

0赞 trincot 7/2/2023
你应该重构你的代码,这样它就不会使用非承诺的回调系统(就像现在所做的那样)。但是你的问题与这个网站无关,因为你有工作代码。要求审查不是这里的主题。passport.use

答: 暂无答案