简体   繁体   English

无法使用 .find() Synatx 从 Mongodb 获取特定字段(新手)

[英]Unable to Fetch specific field from Mongodb using .find() Synatx ( Newbie)

I am newbee.Here is My Code.我是 newbee。这是我的代码。 Bacically I am storing my jwt in Mongo DB and it is getting Properly stored.基本上,我将我的 jwt 存储在 Mongo DB 中,并且它已正确存储。 When I am trying to fetch that token to verify it.当我试图获取该令牌以对其进行验证时。 I am unable to fetch that token.我无法获取该令牌。 And console.log(find_refreshtoken) is showing unexpected data instead of showing token.并且 console.log(find_refreshtoken) 显示意外数据而不是显示令牌。 I want to fetch only tooken from this data.我只想从这些数据中获取。
Please help me.请帮我。 Thanks.谢谢。

{
    _id: 621df700e560c645664a5b8a
    tooken: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE2NDYxMzA5NDQsImV4cCI6M..."
    user: 620cc33a4776c82d2f636399
    createdAt: 2022-03-01T10:35:44.270+00:00
    __v: 0
}

code Goes Here:代码在这里:

verifyRefreshToken: (refreshToken) =>{
        return new Promise((resolve,reject)=>{
            JWT.verify(refreshToken,process.env.Refresh_Token_Secret,(err,payload)=>{
                if(err)return reject(createError.Unauthorized())
                const userId=payload.aud
                const find_refreshtoken= RefreshTokenModel.find({"user":userId},{"tooken":1,"_id":0});
                console.log(find_refreshtoken);
                if(!find_refreshtoken){
                    reject(createError.InternalServerError())
                    return
                }
                if(find_refreshtoken === refreshToken){
                    console.log(find_refreshtoken);
                    return resolve(userId)
                }else{reject(createError.Unauthorized())} //It is executing this part
                
                //resolve(userId)
            })
        })
    }

All you need is to read the documentation您只需要阅读文档

The find method return a Query which means it is expected data not as you claim unxepected data . find方法返回一个Query ,这意味着它是预期的数据,而不是您声称的 unxepected data

So in order for your code to work just change:因此,为了让您的代码正常工作,只需更改:

const find_refreshtoken = RefreshTokenModel.find({"user":userId},{"tooken":1,"_id":0});

to:到:

const result = await RefreshTokenModel.find({"user":userId},{"tooken":1,"_id":0}).exec();

or even better use findOne , since you only want one i suppose:甚至更好地使用findOne ,因为我想你只想要一个:

const result = await RefreshTokenModel.findOne({"user":userId},{"tooken":1,"_id":0}).exec();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM