返回对象json给客户端如何优雅地去除多余/添加额外字段?
发布于 8 年前 作者 ooyeah 4331 次预览 最后一次回复是 8 年前 来自 问答
举个栗子,写一个用户登录接口。
var UserSchema = new mongoose.Schema({
phone: { type: String, trim: true }, // 手机号码
email: { type: String, trim: true }, // 邮箱
*:{}, //此处省略n个字段
passwrod: { type: String, trim: true }, // 密码
}
//登录返回用户对象
User.find(_, function(err, user){
res.json(user)
})
问题一: 只想返回某部分字段,不想返回password等多个字段,应该怎样优雅地处理?
只能在查询的时候指定字段查询吗? (字段多的时候岂不是要跪?)
User.find(_,'phone, email' function(err, user){
res.json(user)
})
4 回复
delete
_.pluck
1.mongoose 提供的 find / findOne / findOneAndUpdate 等多种 find 方法中都可以在 options 参数中指定返回的字段,比如
2.也可以写插件定义 toJSON / toObject 等方法,在返回文档的时候 delete 掉这些字段
3.直接在 controller 里返回字段的时候 delete user.password 就好了
可以在服务端定义接口的返回类型。
然后调用_.pick(obj, [])