0

私はオンラインコースに参加しています。インストラクターが、使用してユーザーを検索/検証しようとしていると言いUser.findOne、要求されたユーザーを見つけるためにいくつかの条件を渡す部分があります。値を渡すために、彼はオブジェクトの分解を使用します。特定のコードは次のとおりです。

const token = req.header("Authorization").replace("Bearer ", "");
const decoded = jwt.verify(token, "secret key here!"); 

// issue is here, look at the second property of the findOne function's argument.
const user=await User.findOne({_id: decoded._id, 'tokens.token': token})

インストラクタは で文字列キーを使用しています'tokens.token'。彼は、指定されたオブジェクトmongodbで使用可能なすべてのトークンをループして、指定されたuserオブジェクトがtoken一致するかどうかを確認すると言っています。

ご参考までに、認証トークンuserを含む単一の例を次に示します。

  {
        "name": "Prottay",
        "_id": "5e27f23b6b549b4c28b8ac35",
        "password": "$2a$08$gUfMwk6TNWViHihrcxjKg.8EXD04lLkGIWXqzrf8wYokdLQXHxpdy",
        "tokens": [
            {
                "_id": "5e27f23b6b549b4c28b8ac36",
                "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1ZTI3ZjIzYjZiNTQ5YjRjMjhiOGFjMzUiLCJpYXQiOjE1Nzk2NzYyMTl9.-PWXzlEoPlEZn9F_awtzqrXOtByxUCW9RCdchHF1yKE"
            },
            {
                "_id": "5e280429596e742dcc2f9e30",
                "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1ZTI3ZjIzYjZiNTQ5YjRjMjhiOGFjMzUiLCJpYXQiOjE1Nzk2ODA4MDl9.7W-QZ55Cc3NFd_-NPyJ0VW_5F1UVrDWAV4xHX63D6tc"
            },
            {
                "_id": "5e280435596e742dcc2f9e31",
                "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1ZTI3ZjIzYjZiNTQ5YjRjMjhiOGFjMzUiLCJpYXQiOjE1Nzk2ODA4MjF9.vppisFiNNC_DYHtGK0IURzEOCCC5zcWl1v9yD6l1D4I"
            }
        ],
        "__v": 3
    },

私には、インストラクターを使用して、正しいトークンと一致するようにユーザーのトークン配列を'tokens.token': tokenループしようとしているように見えます。

私は正しいですか?私がそうなら、彼はどのようにしてオブジェクトの破壊でループを使用できますか?

4

1 に答える 1