mongoose中的查询数组(节点)

时间:2016-12-29 06:02:17

标签: node.js mongodb

如果我有结构

{
   "__v": 0,
   "email": "dw1@gmail.com",
   "password": "dfsdfsdf",
   "_id": "5864a681c02817571564ddeb",
   "tokens": [
      {
         "access": "auth",
         "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.dfsdfsdgsdg3423h4jhj23.7oKGPLMAnSBMYRFTCj-xLwfqIx4q3ZPorM0CNxT3OYA",
         "_id": "5864a681c02817571564ddec"
      }
   ]
}

我想在令牌(数组)中使用令牌我如何在JS中执行此操作?

User.find({
        [WHAT GOES HERE?]


    }).then((result) => {return result;}).catch((e) => {return "error"})

用户是我创建的架构的猫鼬模型。

查找查询部分的内容是什么?

2 个答案:

答案 0 :(得分:1)

使用点(。)表示法 -

User.find({
    'tokens.token': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.dfsdfsdgsdg3423h4jhj23.7oKGPLMAnSBMYRFTCj-xLwfqIx4q3ZPorM0CNxT3OYA'
}).then((result) => {return result;}).catch((e) => {return "error"})

我猜这些令牌对用户来说是独一无二的,因此您可以使用findOne()代替find()

答案 1 :(得分:0)

如果你有userId或者你正在查询特定数据,这很容易。

此处的userId是您要找的userId

User.find({ id : userId}, {tokens : 1}).then((result) {
    console.log(result);             // here result will return you the tokens array.  
    console.log(result[0].token);    // to fetch the token
}).catch((e){return "error"})