假设我的用户在数据库中只有很少的令牌。其中一个令牌可以访问:'unauth',其他令牌:db中的'auth'。我试图通过其中一个令牌访问,我正在使用的令牌......在db中可以访问为'unauth'。理想情况下,不应使用该特定令牌检索用户信息。为什么User.findOne()仍然得到解决?
用户快照
{
"_id" : ObjectId("5a56798ebf68677d469c8226"),
"updatedAt" : ISODate("2018-01-10T20:43:30.895Z"),
"createdAt" : ISODate("2018-01-10T20:37:34.081Z"),
"email" : "test@testing.com",
"password" : "somepwd",
"tokens" : [
{
"access" : "unauth",
"token" : "dfdgdgfgdfgdfgdfgfdgfddfg",
"_id" : ObjectId("5a56798ebf68677d469c8227")
},
{
"access" : "auth",
"token" : "gjhjjjhhhjhhjjhjhjhjjjjjjjjjghfgh",
"_id" : ObjectId("5a567a0ebf68677d469c8229")
}
],
"__v" : 4
}
User.findOne({
'_id': '5a56798ebf68677d469c8226',
'tokens.access': 'auth',
'tokens.token': 'dfdgdgfgdfgdfgdfgfdgfddfg'
})
答案 0 :(得分:0)
显然我设法做到了......,它显示结果的原因是因为Mongodb发现每个元素都包含数组中的任何属性。对于任何偶然发现它的人...如在docs中引用搜索嵌套数组元素的语法是=> (“arrayName”:{$ elemMatch:{“key1”:“value1”,“key2”:“value2”},“key”:“value”});