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'