VirtualType
VirtualType()VirtualType.prototype.applyGetters()VirtualType.prototype.applySetters()VirtualType.prototype.get()VirtualType.prototype.set()
VirtualType()
パラメーター
options«オブジェクト»[options.ref]«文字列|関数»refが nullish でない場合、これは populateされた仮想属性になります。[options.localField]«文字列|関数» populate 対象のローカルフィールド(populateされた仮想属性の場合)。[options.foreignField]«文字列|関数» populate 対象の外部フィールド(populateされた仮想属性の場合)。[options.justOne=false]«ブール値» デフォルトでは、populateされた仮想属性は配列です。justOneを設定すると、populateされた仮想属性は単一ドキュメントまたはnullになります。[options.getters=false]«ブール値» これをtrueに設定すると、Mongoose はこの仮想属性で定義されたカスタムゲッターを呼び出します。[options.count=false]«ブール値» これをtrueに設定すると、populate()は、ドキュメント自体ではなく、Query#countDocuments()を使用して、populateされたドキュメントの数をこの仮想属性に設定します。[options.match=null]«オブジェクト|関数»populate()に追加のマッチ条件を追加します。[options.limit=null]«数値»populate()クエリにデフォルトのlimitを追加します。[options.skip=null]«数値»populate()クエリにデフォルトのskipを追加します。[options.perDocumentLimit=null]«数値» 互換性のため、populate()でのlimitは、populateされる各ドキュメントに対して単一のクエリしか実行しないため、正しくない結果になる可能性があります。perDocumentLimitを設定すると、Mongoose は各ドキュメントに対して個別のクエリを実行することにより、ドキュメントごとの正しいlimitを保証します。たとえば、.find().populate({ path: 'test', perDocumentLimit: 2 })は、.find()が 2 つのドキュメントを返す場合、さらに 2 つのクエリを実行します。[options.options=null]«オブジェクト»limitやleanなどの追加オプション。name«文字列»
VirtualType コンストラクタ
これは、Mongoose が Schema.prototype.virtual を介して仮想属性を定義するために使用します。
例
const fullname = schema.virtual('fullname');
fullname instanceof mongoose.VirtualType // true VirtualType.prototype.applyGetters()
パラメーター
value«オブジェクト»doc«ドキュメント» この仮想属性がアタッチされているドキュメント
戻り値
- «任意» すべてのゲッターを適用した後の値
value にゲッターを適用します。
VirtualType.prototype.applySetters()
パラメーター
value«オブジェクト»doc«ドキュメント»
戻り値
- «任意» すべてのセッターを適用した後の値
value にセッターを適用します。
VirtualType.prototype.get()
パラメーター
fn«関数»
戻り値
- «VirtualType» this
この仮想属性にカスタムゲッターを追加します。
Mongoose は以下の 3 つの引数を使用してゲッター関数を呼び出します。
value: 前のゲッターによって返された値。ゲッターが 1 つしかない場合、valueはundefinedになります。virtual:.get()を呼び出した仮想オブジェクト。doc: この仮想属性がアタッチされているドキュメント。thisと同等です。
例
const virtual = schema.virtual('fullname');
virtual.get(function(value, virtual, doc) {
return this.name.first + ' ' + this.name.last;
}); VirtualType.prototype.set()
パラメーター
fn«関数»
戻り値
- «VirtualType» this
この仮想属性にカスタムセッターを追加します。
Mongoose は以下の 3 つの引数を使用してセッター関数を呼び出します。
value: 設定される値。virtual:.set()を呼び出している仮想オブジェクト。doc: この仮想属性がアタッチされているドキュメント。thisと同等です。
例
const virtual = schema.virtual('fullname');
virtual.set(function(value, virtual, doc) {
const parts = value.split(' ');
this.name.first = parts[0];
this.name.last = parts[1];
});
const Model = mongoose.model('Test', schema);
const doc = new Model();
// Calls the setter with `value = 'Jean-Luc Picard'`
doc.fullname = 'Jean-Luc Picard';
doc.name.first; // 'Jean-Luc'
doc.name.last; // 'Picard' 
