蓝鸟节点承诺,无法解决价值

bluebird node promises, cant resolve value

我正在尝试使用 bluebird 在我的快速应用程序中编写一些承诺,但是 运行 遇到了问题。我如何在此处访问 user 值 - resolve(response) 方法未返回它。

这是路由文件:

router.get('/auth/google/callback', (req, res) => {

    google.getToken(req.query.code)
        .then( () => { google.getUser() })
        .then(user => {
            console.log(user); //undefined - response is NOT defined here
        })
});

这是用于管理从中导出方法的身份验证的文件。

module.exports.getToken = (code)=> {
    console.log('step 1');
    return new Promise((resolve, reject) => {

        oauth2Client.getToken(code, (err, tokens) => {
            if (!err) {
                oauth2Client.setCredentials(tokens);
                resolve();
            }

        });

    });

};

module.exports.getUser = () => {
    console.log('step 2');
    return new Promise((resolve, reject) =>{

         plus.people.get({
            userId: 'me',
            auth: oauth2Client
        }, (err, response) => {
            if(!err)
                resolve(response); //response is defined here as the user
            else
                reject(err);
        });
    });
};

您似乎将路由文件中的 .then 链接到错误的方法,如果您期望 google.getUser() 到 return 您想要存储在用户中的值应该在该函数调用的末尾链接 .then

router.get('/auth/google/callback', (req, res) => {

    google.getToken(req.query.code).then( () => { 

        google.getUser().then(user => {
            console.log(user); //undefined - response is NOT defined here
        }); //End getUser().then(..)

    }); //End getToken.then(..)

}); //End router.get(..)