【问题标题】:I don't want it to return the _id of the database我不希望它返回数据库的 _id
【发布时间】:2021-04-25 23:53:17
【问题描述】:

我正在创建一个登录页面,如果该人成功登录,它会从数据库返回用户信息,但我希望它不要返回数据库分配的_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.js reactjs mongodb mongoose mongodb-query


    【解决方案1】:

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

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

    像这样:

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

    检查this example,我没有显示_idfield2

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

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

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

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

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

    【讨论】:

      【解决方案2】:

      您可以复制您的对象,然后他们使用delete 将其删除。

      
      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{
              const copyOfUser = {...user};
              delete copyOfUser._id;
              res.status(200).send({user: copyOfUser})
          }
      })
      
      

      【讨论】:

        【解决方案3】:

        您可以通过在搜索参数后设置值_id: 0 从文档中删除字段

        function userSearch(req, res) {
            const user = req.params.userId
            console.log(user)
            User.findOne({ user }, {_id: 0}, (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
                    })
                }
            })
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-05-15
          • 2023-02-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多