首页 > 解决方案 > 我不希望它返回数据库的 _id

问题描述

我正在创建一个登录页面,如果该人成功登录它会从数据库返回用户信息,但我希望它不返回_id数据库分配的信息,有人知道该怎么做。

功能码

function userSearch(req, res) {
    const user = req.params.userId
    console.log(user)
    User.findOne({ user }, (err, user) => {
        if (err) {
            res.status(500).send({
                message: 'A ocurrido un error ' + err + '',
                status: 500
            })
        } else if (!user) {
            res.status(404).send({
                message: 'No se a encontrado al usuario'
            })
        } else {
            res.status(200).send({
                user
            })
        }
    })
}

标签: node.jsreactjsmongodbmongoosemongodb-query

解决方案


您可以使用$projection它只返回您想要的值。

只是在您说的查询中添加一个新对象:{_id: 0}

像这样:

db.collection.find({},
{
  _id: 0,
})

检查这个我没有显示_id和的例子field2

所以在你的情况下将是这样的:

User.findOne({user}, {_id:0}, (err, user) =>{
   //...
})

另外,如果您不想返回另一个字段作为密码或类似的东西,您只需添加到projection.

User.findOne({user}, {_id:0, pass:0}, (err, user) =>{
   //...
})

等等,你想要多少个字段。


推荐阅读