VirtualType


VirtualType()

パラメーター
  • options «オブジェクト»
    • [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] «オブジェクト» limitlean などの追加オプション。

  • 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 つしかない場合、valueundefined になります。
  • 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'