首页 文章

如何从成功的承诺中获取 Value 并存储到外部变量中?

提问于
浏览
0

考虑下面的代码:

userSessionDetail.save((err, data) => {
    if (data) {
        console.log('User Session has been successfully created!');
        returnUserData = {
            username: user.username,
            sessionid: LoginUserModel.findOne({
                    email: req.body._usercredentials.email
                })
                .sort({
                    loginDateTime: 'desc'
                })
                .then((res) => {
                    // console.log(res._id) Successfully get value from promise
                    return res._id
                })
                .catch((err) => {
                    console.log(err);
                })
        }
        console.log(returnUserData.sessionid); //empty
    } else {
        console.log('While creating User Session, something went wrong.');
    }
})

我正在尝试的是从我的承诺中获取 Value 并将我的 property Value sessionid . 上面的代码并没有从我的承诺中获得 Value . 它显示了我的结果如下:

用户会话已成功创建! Promise {emitter:EventEmitter {domain:null,events:{reject:[Function]}, eventscount:1,_maxListeners:undefined},emit:{},ends:true}

你能澄清一下如何将生成的'res._id'传递给属性sessionid的值,而不是传递给它本身吗?

1 回答

  • 1

    mongoose的findone方法返回一个promise,当mongodb(最终)返回数据时执行 Promise.then() 回调:

    userSessionDetail.save((err, data) => {
        if (data) {
            console.log('User Session has been successfully created!');
            LoginUserModel.findOne({
                                email: req.body._usercredentials.email
                            })
                            .sort({
                                loginDateTime: 'desc'
                            })
                            .then((res) => {
                                // console.log(res._id) Successfully get value from promise
                                returnUserData = {
                                    username: user.username,
                                    sessionid: res._id
                                }
                                console.log(returnUserData.sessionid); //empty
                            })
                            .catch((err) => {
                                console.log(err);
                            })
        } else {
            console.log('While creating User Session, something went wrong.');
        }
    })
    

相关问题