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の友達全員にユーザートークンを送信したくないとリクエストした場合、これはほとんどすべてのリクエストに当てはまります。ただし、ログインなどの一部のリクエストでは、トークンを送信したいと思います。
これに伴う問題は、データベースにクエリを実行してトークンを送信するときに結果をフィルタリングし忘れると、他の情報がかなり致命的になる可能性があることです。
私が今考えている解決策は、デフォルトでどのフィールドを選択するかを指定するメソッド(まだどちらかわからない)をオーバーライドすることです。次に、さらに必要ないくつかのケースでは、クエリでそれを指定する必要があります。これにより、メモリスリップによって誤ったデータが送信されることがなくなります。
この問題をどのように解決しますか?