mongoose文档过滤属性

Sye*_*yed 2 javascript mongoose mongodb node.js mongodb-query

我已经定义了一个类似的模式

var UserSchema = new Schema({
  firstName: { type: String, required: true },
  lastName: { type: String, required: true },
  email: { type: String, required: true },
  location: { type: String, required: true },
  picture: { type: String, required: true },
  passwordHash: { type: String, required: true },
  resetPasswordToken: String,
  resetPasswordExpired: Boolean
});
Run Code Online (Sandbox Code Playgroud)

我有一个REST端点,它返回所有用户的列表.在该列表中我想隐藏一些属性,即passwordHash, resetPasswordToken, resetPasswordExpired

我定义了一个自定义过滤函数,如下所示

var doFilterUser = function(user) {
  _.omit(user, ['passwordHash', 'resetPasswordToken', 'resetPasswordExpired']);
   user.id = user._id;
   delete user._id;
   delete user.__v;
   return user;
};
Run Code Online (Sandbox Code Playgroud)

_ 是lodash

当我检查我的API是否响应所有用户属性

这个过滤器函数在公共帮助器模块中定义,我称之为

User.findOne({_id: id}, function(err, user) {
  var filtered = helper.doFilterUser(user);
});
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题?

小智 5

试试这个:你可以通过mongoose访问某些值.

User.findOne({_id: id}, 'firstName lastName email location picture', function(err, user){
  console.log(user);
Run Code Online (Sandbox Code Playgroud)

});

您只需在查询后提及所需的字段.

希望能帮助到你....