【问题标题】:How to omit fields from mongoose query result?如何从猫鼬查询结果中省略字段?
【发布时间】:2019-12-12 20:46:23
【问题描述】:

使用 findById 获取 mongoose 文档后,我无法过滤/省略某些字段

我试过const { password, ...user } = await UserModel.findById(123);

但是用户不是普通的 js 对象而是猫鼬文档。

请注意,.lean() & .select() 不是一个选项。

理想情况下,我想要类似于 const { password, ...user } 但没有精益的东西。

我想 delete user.password 会起作用,但我不想弄乱猫鼬文档本身。因为它有字段的设置器/获取器。

【问题讨论】:

    标签: node.js mongodb mongoose nosql


    【解决方案1】:

    在猫鼬Document 中,所有返回的文档都位于属性_doc 中。理想且推荐的方法是在查询中使用lean()。但是要回答您的用例,请尝试以下操作:

    const result = await UserModel.findById(123);
    const { password, ...user } = result._doc;
    

    【讨论】:

    • 谢谢,我在记录结果时看到了该字段。认为这不是正确的方式,因为“_doc”乍一看似乎是内部的。 p.s.似乎精益确实是唯一/最好的选择
    【解决方案2】:

    让 user= await UserModel.findById(123,'user');

    您可以在此处输入投影作为查询中的第二个参数,并添加更多密钥作为“用户密码”等作为响应发送。

    【讨论】:

    • 这是一个选项,但不想列出除密码以外的所有其他字段,无论如何谢谢
    猜你喜欢
    • 1970-01-01
    • 2023-01-19
    • 2017-09-21
    • 2014-03-03
    • 2017-05-08
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多