从路由器发布响应中检索键值?

时间:2019-07-11 21:28:21

标签: node.js express

当我使用电子邮件搜索用户时,我得到了USER Schema的响应,但事实是我不需要整个数据集,只需要一个字段balance

routes / users.js

//show balance
router.post('/balance',passport.authenticate('jwt', {session : false}) , (req, res, next) => {

  const email = req.body.email;
  User.find({email} , (err, users) => {

      if(err){
      return res.send({
          success: false,
          message: 'Error while retrieving the balance'
      });
  }

  return res.send({

    users

  });
});
});

我得到的服务器响应

{
    "users": [
        {
            "_id": "5d276ccccd1f520394e29bd7",
            "name": "george",
            "email": "fake@fake.com",
            "password": "$2a$10$w967rx9ZN50W0kQCE4X8IO/eGGS2YsXlbYgdjC7Sns380IbGbqvlS",
            "balance": 1000,
            "__v": 0
        }
    ]
}

如您所见,我只想要这个:

balance": 1000

2 个答案:

答案 0 :(得分:0)

如果您使用select模型,则可以使用mongoose

User.find({}).select('Balance')

答案 1 :(得分:0)

您可以使用findOne,以便仅获取一个结果而不是结果数组,还可以使用投影仅获取balance属性:

// show balance
router.post('/balance',passport.authenticate('jwt', {session : false}) , (req, res, next) => {
  const { email } = req.body;
  User.findOne({ email }).select('balance').lean().exec((err, user) => {
      if (err) {
        return res.send({
            success: false,
            message: 'Error while retrieving the balance'
        });
      }

    const { balance } = user;
    return res.send({
      balance,
    });
  });
});

希望这会有所帮助