是否可以创建一个Mongoose钩子来将投影应用于所有查询

时间:2017-06-04 16:22:52

标签: mongodb mongoose hook

我希望每次用户请求信息时都阻止用户的加密密码通过网络发送。我知道在mongo我可以应用投影来实现这个目标

db.users.findByID(_id, { password: 0 } )

但是我希望有一些.pre()钩子将它应用于每个查询。这个或功能等同物可能吗?

1 个答案:

答案 0 :(得分:2)

您可以配置一个字段,以便默认使用select从查询中排除:

let UserSchema = new Schema({
  ...
  password : { type : String, select : false },
  ...
});

如果确实需要返回字段,则可以在每个查询的基础上覆盖它:

db.users.findByID(_id, { password: 1 } )

此处记录:http://mongoosejs.com/docs/api.html#schematype_SchemaType-select