Mongoose如何根据请求路由控制password字段是否返回
解决方案
你不需要调整现有UserSchema的定义,Mongoose原生支持在查询时覆盖字段的默认显隐规则,实现不同路由的返回差异:
路由A(需返回password字段)
在查询语句后追加 .select('+password') 即可,+ 号是Mongoose的专用语法,用于显式包含默认被select: false隐藏的字段:
router.get('/A', async (req, res) => { // 示例查询逻辑,find/findOne/findById等方法都支持该语法 const userList = await User.find().select('+password'); res.send(userList); })
路由B(不返回password字段)
无需做任何额外配置,直接按原有逻辑查询即可,Schema默认的select: false规则会自动生效,password字段不会被返回:
router.get('/B', async (req, res) => { const userList = await User.find(); res.send(userList); })
注意:password属于敏感字段,仅在必要的场景(比如用户密码校验逻辑)下才使用
.select('+password')查询,避免敏感信息泄露。
内容的提问来源于stack exchange,提问作者user17161243
相关产品推荐
相关产品推荐

