我正在使用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朋友时,我不想向他发送用户令牌,几乎每个请求都是如此。但对于某些请求,例如登录,我想发送令牌。
问题在于,在查询数据库时忘记过滤结果并发送令牌等其他信息可能非常致命。
我现在想到的解决方案是覆盖一个方法(不知道哪个),我指定默认选择哪些字段。然后在我需要更多的少数情况下,我必须在查询中指定它。这将确保内存单不会导致错误的数据被发送出去。
你如何解决这个问题?
答案 0 :(得分:1)
默认情况下,您可以通过架构中字段定义的select
属性排除结果中的token
字段:
token : {
'type' : String,
'index' : { unique: true },
'required' : true,
'select' : false
}