在发送之前过滤响应

我正在编写一个服务器在Node.js和MongoDB与mongoose。

我有一个用户模型,看起来像这样:

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朋友时,我不想给他发送用户令牌,几乎每个请求都是这样。 但对于一些请求,如login,我想发送令牌。

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

我现在正在考虑的解决scheme是重写一个方法(不知道哪个方法),我指定了默认情况下应该select哪些字段。 然后在我需要更多的情况下,我必须在查询中指定它。 这样可以确保内存卡不会导致错误的数据被发送出去。

你如何解决这个问题?

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

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