当我使用电子邮件搜索用户时,我得到了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
答案 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,
});
});
});
希望这会有所帮助