2

我正在用 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 朋友时,我不想向他发送用户令牌,这几乎适用于每个请求。但是对于某些请求,例如登录,我想发送令牌。

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

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

你如何解决这个问题?

4

1 回答 1

1

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

token : {
  'type'      : String,
  'index'     : { unique: true },
  'required'  : true,
  'select'    : false
}
于 2012-08-12T19:26:46.333 回答