蓝鸟节点承诺,不能解决价值

时间:2017-05-22 22:58:38

标签: node.js express 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);
        });
    });
};

1 个答案:

答案 0 :(得分:1)

如果您希望.then返回要存储在用户中的值,则应将链接{{1}链接到您的路径文件中的google.getUser()。在函数调用结束时。

.then