これが私がやろうとしていることです。
私は信頼できる環境でmongoosejsを使用しています(別名、渡されたものは常に安全/事前検証済みと見なされます)。実行する可能性のあるすべてのクエリで、それを「選択」して「入力」する必要があります。すべてのリクエストに対して一貫した方法でこれを取得しています。私はこのようなことをしたい:
var paramObject = sentFromUpAbove; // sent down on every Express request
var query = {...}
Model.myFind(query, paramObject).exec(function(err, data) {...});
ミドルウェアまたはその他の構成要素に渡す関数は単純です。
function(query, paramObject) {
return this.find(query)
.populate(paramObject.populate)
.select(paramObject.select);
}
そして、findOne についても同じです。Mongoose を直接拡張してこれを行う方法は知っていますが、それは汚いと感じます。私はむしろ、ミドルウェアまたはこれをクリーンである程度将来性のある方法で行う他の構造を使用したいと考えています。
モデルごとに静的を介してこれを達成できることは承知していますが、すべてのモデルで普遍的に実行したいと考えています。何かアドバイス?