【问题标题】:Filter response before sending it在发送之前过滤响应
【发布时间】:2012-08-13 03:26:46
【问题描述】:

我正在使用 mongoose 在 Node.js 和 MongoDB 中编写服务器。

我有一个如下所示的用户模型:

var User = new Schema({
  username : {
    'type'      : String,
    'trim'      : true,
    'required'  : true,
    'validate': [usernameValidator, 'whitespace_not_allowed']
  },
  avatar : {
    'type'      : String,
    'lowercase' : true,
    'required'  : true
  },
  facebook_id : {
    'type'      : Number,
    'required'  : true,
    'index'     : { unique: true }
  },
  email : {
    'type'      : String,
    'lowercase' : true,
    'required'  : true
  },
  token : {
    'type'      : String,
    'index'     : { unique: true },
    'required'  : true
  }
});

当客户请求他所有的 Facebook 朋友时,我不想向他发送用户令牌,这几乎适用于每个请求。但是对于某些请求,例如登录,我想发送令牌。

这样做的问题是,在查询数据库时忘记过滤结果并发送令牌其他信息可能是非常致命的。

我现在正在考虑的解决方案是覆盖一个方法(还不知道是哪个),我在其中指定默认情况下应该选择哪些字段。然后在我需要更多的少数情况下,我必须在查询中指定它。这将确保内存泄漏不会导致错误的数据被发送出去。

你如何解决这个问题?

【问题讨论】:

    标签: node.js mongodb filtering mongoose


    【解决方案1】:

    您可以通过架构中字段定义的select 属性默认排除结果中的token 字段:

    token : {
      'type'      : String,
      'index'     : { unique: true },
      'required'  : true,
      'select'    : false
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-04
      • 1970-01-01
      • 1970-01-01
      • 2020-02-16
      • 2020-08-01
      • 1970-01-01
      • 2019-05-19
      • 2015-11-21
      相关资源
      最近更新 更多