【问题标题】:how to hide some properties after receiving result when saving mongoose object?保存猫鼬对象时如何在收到结果后隐藏某些属性?
【发布时间】:2019-12-30 08:46:40
【问题描述】:

我知道当我执行这样的查找查询时,我可以使用 select 从 mongoose 模型中隐藏一些属性:

Product.find()
    .select("-__v")
    .then((products) => {}

但是在执行save()时,.select()不起作用,并报错

"TypeError: (intermediate value).save(...).select is not a function"

const user = await new User({
        email: email,
        password: hashedPassword
      }).save().select("-password")

成功保存用户对象后,我想从用户对象中删除密码。如何使用猫鼬做到这一点?

【问题讨论】:

    标签: node.js mongoose


    【解决方案1】:

    只需使用以下属性更新您的用户模型。

    password: {
        type: String,
        select: false //prevent password to show in query results
    },
    

    【讨论】:

      【解决方案2】:

      .save() 不是一个不能链接查询助手的查询。

      插入文档后删除属性

      let user = await new User({
        email: email,
        password: hashedPassword
      }).save()
      
      user = user.toObject();
      
      delete user.password;
      

      【讨论】:

      • 不幸的是,如果使用 delete user.password,密码属性仍然包括在内;
      猜你喜欢
      • 2018-07-15
      • 2016-06-17
      • 2018-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-09
      • 2016-05-03
      相关资源
      最近更新 更多