スキーマ


Schema()

パラメータ
  • [definition] «オブジェクト|スキーマ|配列» スキーマパスを記述するオブジェクト、コピーするスキーマ、またはオブジェクトとスキーマの配列のいずれか

  • [options] «オブジェクト»
継承

スキーマコンストラクタ。

const child = new Schema({ name: String });
const schema = new Schema({ name: String, age: Number, children: [child] });
const Tree = mongoose.model('Tree', schema);

// setting schema options
new Schema({ name: String }, { id: false, autoIndex: false })

オプション

  • autoIndex: 真偽値 - デフォルトはnull(接続のautoIndexオプションを使用することを意味します)
  • autoCreate: 真偽値 - デフォルトはnull(接続のautoCreateオプションを使用することを意味します)
  • bufferCommands: 真偽値 - デフォルトはtrue
  • bufferTimeoutMS: 数値 - デフォルトは10000(10秒)。 bufferCommandsが有効な場合、Mongooseがエラーを発生させる前に接続の再確立を待機する時間。
  • capped: 真偽値 | 数値 | オブジェクト - デフォルトはfalse
  • collection: 文字列 - デフォルトなし
  • discriminatorKey: 文字列 - デフォルトは__t
  • id: 真偽値 - デフォルトはtrue
  • _id: 真偽値 - デフォルトはtrue
  • minimize: 真偽値 - 手動で呼び出されたときのdocument#toObjectの動作を制御します - デフォルトはtrue
  • read: 文字列
  • readConcern: オブジェクト - デフォルトはnull、すべてのクエリにデフォルトの読み取りコンサーンを設定するために使用します。
  • writeConcern: オブジェクト - デフォルトはnull、MongoDBサーバーのデフォルトの書き込みコンサーン設定をオーバーライドするために使用します
  • shardKey: オブジェクト - デフォルトはnull
  • strict: 真偽値 - デフォルトはtrue
  • strictQuery: 真偽値 - デフォルトはfalse
  • toJSON - オブジェクト - デフォルトなし
  • toObject - オブジェクト - デフォルトなし
  • typeKey - 文字列 - デフォルトは 'type'
  • validateBeforeSave - 真偽値 - デフォルトはtrue
  • validateModifiedOnly - 真偽値 - デフォルトはfalse
  • versionKey: 文字列またはオブジェクト - デフォルトは"__v"
  • optimisticConcurrency: 真偽値 - デフォルトはfalse。楽観的同時実行制御を有効にするにはtrueに設定します。
  • collation: オブジェクト - デフォルトはnull(照合を使用しないことを意味します)
  • timeseries: オブジェクト - デフォルトはnull(このスキーマのコレクションは時系列コレクションではないことを意味します)
  • selectPopulatedPaths: 真偽値 - デフォルトはtrue
  • skipVersioning: オブジェクト - バージョニングから除外するパス
  • timestamps: オブジェクトまたは真偽値 - デフォルトはfalse。 trueの場合、MongooseはスキーマにcreatedAtおよびupdatedAtプロパティを追加し、それらのプロパティを管理します。
  • pluginTags: 文字列の配列 - デフォルトはundefined。設定されていて、プラグインがtagsオプションで呼び出された場合、一致するタグを持つスキーマにのみそのプラグインを適用します。
  • virtuals: オブジェクト - 定義する仮想、.virtualのエイリアス
  • [collectionOptions]: Model.createCollection()を呼び出すか、autoCreateをtrueに設定したときにcreateCollection()に渡されるオプションを持つオブジェクト。

ネストされたスキーマのオプション

  • excludeIndexes: 真偽値 - デフォルトはfalsetrueの場合、このスキーマのパスにインデックスを作成しません。

注意

スキーマをネストする場合(上記の例ではchildren)、常に子スキーマを親に渡す前に宣言してください。


Schema.Types

タイプ
  • «プロパティ»

さまざまな組み込みMongooseスキーマタイプ。

const mongoose = require('mongoose');
const ObjectId = mongoose.Schema.Types.ObjectId;

タイプ

この公開されている`Mixed` SchemaTypeへのアクセスを使用して、スキーマで使用できます。

const Mixed = mongoose.Schema.Types.Mixed;
new mongoose.Schema({ _user: Mixed })

Schema.indexTypes

タイプ
  • «プロパティ»

許可されるインデックスタイプ


Schema.prototype.add()

パラメータ
  • obj «オブジェクト|スキーマ» パスを追加するプレーンオブジェクト、または別のスキーマ

  • [prefix] «文字列» 新しく追加されたパスのプレフィックスとなるパス

戻り値
  • «スキーマ» スキーマインスタンス

キパス/スキーマタイプのペアをこのスキーマに追加します。

const ToySchema = new Schema();
ToySchema.add({ name: 'string', color: 'string', price: 'number' });

const TurboManSchema = new Schema();
// You can also `add()` another schema and copy over all paths, virtuals,
// getters, setters, indexes, methods, and statics.
TurboManSchema.add(ToySchema).add({ year: Number });

Schema.prototype.alias()

パラメータ
  • path «文字列» エイリアスにする実際のパス

  • alias «文字列|文字列配列» pathのエイリアスとして使用するパス

戻り値
  • «スキーマ» スキーマインスタンス

pathのエイリアスを追加します。これは、`alias`を取得または設定することが、`path`を取得または設定することと同等であることを意味します。

const toySchema = new Schema({ n: String });

// Make 'name' an alias for 'n'
toySchema.alias('n', 'name');

const Toy = mongoose.model('Toy', toySchema);
const turboMan = new Toy({ n: 'Turbo Man' });

turboMan.name; // 'Turbo Man'
turboMan.n; // 'Turbo Man'

turboMan.name = 'Turbo Man Action Figure';
turboMan.n; // 'Turbo Man Action Figure'

await turboMan.save(); // Saves { _id: ..., n: 'Turbo Man Action Figure' }

Schema.prototype.childSchemas

タイプ
  • «プロパティ»

子スキーマ(ドキュメント配列と単一のネストされたサブドキュメントから)と対応するコンパイル済みモデルの配列。配列の各要素は、`schema`と`model`の2つのプロパティを持つオブジェクトです。

このプロパティは、通常、プラグインの作成者と上級ユーザーにのみ役立ちます。mongooseを使用するために、このプロパティと対話する必要はまったくありません。


Schema.prototype.clearIndexes()

戻り値
  • «スキーマ» スキーマインスタンス

このスキーマからすべてのインデックスを削除します。

clearIndexesは、スキーマオブジェクトからインデックスのみを削除します。 MongoDBのインデックスには**影響しません**。

const ToySchema = new Schema({ name: String, color: String, price: Number });
ToySchema.index({ name: 1 });
ToySchema.index({ color: 1 });

// Remove all indexes on this schema
ToySchema.clearIndexes();

ToySchema.indexes(); // []

Schema.prototype.clone()

戻り値
  • «スキーマ» クローンされたスキーマ

スキーマのディープコピーを返します

const schema = new Schema({ name: String });
const clone = schema.clone();
clone === schema; // false
clone.path('name'); // SchemaString { ... }

Schema.prototype.discriminator()

パラメータ
  • name «文字列» ディスクリミネータの名前

  • schema «スキーマ» 識別されるスキーマ

  • [options] «オブジェクト» ディスクリミネータオプション

    • [options.value] «文字列» discriminatorKeyプロパティに格納されている文字列。指定しない場合、Mongooseは`name`パラメータを使用します。

    • [options.clone=true] «真偽値» デフォルトでは、`discriminator()`は指定された`schema`を複製します。複製をスキップするには、`false`に設定します。

    • [options.overwriteModels=false] «真偽値» デフォルトでは、Mongooseは別のディスクリミネータと同じ名前のディスクリミネータを定義することを許可していません。これを設定すると、同じ名前のディスクリミネータを上書きできます。

    • [options.mergeHooks=true] «真偽値» デフォルトでは、Mongooseはベーススキーマのフックとディスクリミネータスキーマのフックをマージします。このオプションを`false`に設定すると、Mongooseはディスクリミネータスキーマのフックを代わりに使用します。

    • [options.mergePlugins=true] «真偽値» デフォルトでは、Mongooseはベーススキーマのプラグインとディスクリミネータスキーマのプラグインをマージします。このオプションを`false`に設定すると、Mongooseはディスクリミネータスキーマのプラグインを代わりに使用します。

戻り値
  • «スキーマ» スキーマインスタンス

既存のスキーマにディスクリミネータを適用することにより、スキーマを継承します。

const eventSchema = new mongoose.Schema({ timestamp: Date }, { discriminatorKey: 'kind' });

const clickedEventSchema = new mongoose.Schema({ element: String }, { discriminatorKey: 'kind' });
const ClickedModel = eventSchema.discriminator('clicked', clickedEventSchema);

const Event = mongoose.model('Event', eventSchema);

Event.discriminators['clicked']; // Model { clicked }

const doc = await Event.create({ kind: 'clicked', element: '#hero' });
doc.element; // '#hero'
doc instanceof ClickedModel; // true

Schema.prototype.eachPath()

パラメータ
  • fn «関数» コールバック関数

戻り値
  • «スキーマ» this

Array#forEachと同様にスキーマパスを反復処理します。

コールバックには、パス名とschemaTypeインスタンスが渡されます。

const userSchema = new Schema({ name: String, registeredAt: Date });
userSchema.eachPath((pathname, schematype) => {
  // Prints twice:
  // name SchemaString { ... }
  // registeredAt SchemaDate { ... }
  console.log(pathname, schematype);
});

Schema.prototype.get()

パラメータ
  • key «文字列» 現在の値を取得するオプションの名前

戻り値
  • «任意» オプションの値

スキーマオプションを取得します。

schema.get('strict'); // true
schema.set('strict', false);
schema.get('strict'); // false

Schema.prototype.index()

パラメータ
  • fields «オブジェクト» インデックスを作成するフィールド。順序とともに、使用可能な値: `1 | -1 | '2d' | '2dsphere' | 'geoHaystack' | 'hashed' | 'text'`

  • [options] «オブジェクト» MongoDBドライバーの`createIndex()`関数に渡すオプション

    • [options.expires=null] «文字列|数値» Mongoose固有の糖衣構文。上記のリンクの`expireAfterSeconds`の秒に変換するためにmsを使用します `expires`オプション。

    • [options.language_override=null] «文字列» テキストインデックスの解析に`language`の代わりに指定されたフィールドを使用するようにmongodbに指示します。

このスキーマのインデックス(ほとんどの場合複合)を定義します。

schema.index({ first: 1, last: -1 })

Schema.prototype.indexes()

戻り値
  • «配列» スキーマで定義されているインデックスのリスト

このスキーマが`schema.index()`を介して、またはパスのオプションで`index:true`によって宣言するインデックスのリストを返します。インデックスは配列`[spec、options]`として表されます。

const userSchema = new Schema({
  email: { type: String, required: true, unique: true },
  registeredAt: { type: Date, index: true }
});

// [ [ { email: 1 }, { unique: true, background: true } ],
//   [ { registeredAt: 1 }, { background: true } ] ]
userSchema.indexes();

プラグインはこの関数の戻り値を使用してスキーマのインデックスを変更できます。たとえば、以下のプラグインは、デフォルトですべてのインデックスを一意にします。

function myPlugin(schema) {
  for (const index of schema.indexes()) {
    if (index[1].unique === undefined) {
      index[1].unique = true;
    }
  }
}

Schema.prototype.loadClass()

パラメータ
  • model «関数» ロードするクラス

  • [virtualsOnly] «真偽値» trueの場合、メソッドまたは静的ではなく、クラスからのみ仮想を取得します

ES6クラスをスキーマにロードします。 セッター + ゲッター静的メソッド、およびインスタンスメソッドをスキーマ仮想静的、およびメソッドにマップします。

const md5 = require('md5');
const userSchema = new Schema({ email: String });
class UserClass {
  // `gravatarImage` becomes a virtual
  get gravatarImage() {
    const hash = md5(this.email.toLowerCase());
    return `https://www.gravatar.com/avatar/${hash}`;
  }

  // `getProfileUrl()` becomes a document method
  getProfileUrl() {
    return `https://mysite.com/${this.email}`;
  }

  // `findByEmail()` becomes a static
  static findByEmail(email) {
    return this.findOne({ email });
  }
}

// `schema` will now have a `gravatarImage` virtual, a `getProfileUrl()` method,
// and a `findByEmail()` static
userSchema.loadClass(UserClass);

Schema.prototype.method()

パラメータ
  • name «文字列|オブジェクト» 単一の関数のメソッド名、または「文字列と関数」のペアのオブジェクト。

  • [fn] «関数» 単一関数定義における関数。

このスキーマからコンパイルされたモデルから構築されたドキュメントにインスタンスメソッドを追加します。

const schema = kittySchema = new Schema(..);

schema.method('meow', function () {
  console.log('meeeeeoooooooooooow');
})

const Kitty = mongoose.model('Kitty', schema);

const fizz = new Kitty;
fizz.meow(); // meeeeeooooooooooooow

名前/関数ペアのハッシュが唯一の引数として渡された場合、各名前/関数ペアはメソッドとして追加されます。

schema.method({
    purr: function () {}
  , scratch: function () {}
});

// later
const fizz = new Kitty;
fizz.purr();
fizz.scratch();

注: Schema.method() はインスタンスメソッドを Schema.methods オブジェクトに追加します。 ガイド に示されているように、インスタンスメソッドを Schema.methods オブジェクトに直接追加することもできます。


Schema.prototype.obj

タイプ
  • «プロパティ»

スキーマコンストラクタに渡された元のオブジェクト

const schema = new Schema({ a: String }).add({ b: String });
schema.obj; // { a: String }

Schema.prototype.omit()

パラメータ
  • paths «文字列配列» 新しいスキーマで省略するパスのリスト

  • [options] «オブジェクト» 新しいスキーマコンストラクタに渡すオプション (new Schema(.., Options) と同じ)。設定されていない場合は、デフォルトで this.options になります。

戻り値
  • «スキーマ»

元のスキーマから省略されたパスを除いたパスを持つ新しいスキーマを返します。

このメソッドは、Mongoose スキーマのための Lodash の omit() 関数 に類似しています。

const schema = Schema({ name: String, age: Number });
// Creates a new schema omitting the `age` path
const newSchema = schema.omit(['age']);

newSchema.path('name'); // SchemaString { ... }
newSchema.path('age'); // undefined

Schema.prototype.path()

パラメータ
  • path «文字列» 取得/設定するパスの名前

  • [obj] «オブジェクト» パスを設定する型。パスが指定されている場合はパスが設定され、そうでない場合はパスが取得されます。

スキーマパスを取得/設定します。

パスを設定します (アリティが 2 の場合)。パスを取得します (アリティが 1 の場合)。

schema.path('name') // returns a SchemaType
schema.path('name', Number) // changes the schemaType of `name` to Number

Schema.prototype.pathType()

パラメータ
  • path «文字列»
戻り値
  • «文字列»

このスキーマの path の pathType を返します。

パスが与えられた場合、それが実際のパス、仮想パス、ネストされたパス、またはアドホック/未定義のパスであるかどうかを返します。

const s = new Schema({ name: String, nested: { foo: String } });
s.virtual('foo').get(() => 42);
s.pathType('name'); // "real"
s.pathType('nested'); // "nested"
s.pathType('foo'); // "virtual"
s.pathType('fail'); // "adhocOrUndefined"

Schema.prototype.paths

タイプ
  • «プロパティ»

このスキーマで定義されたパス。キーはこのスキーマのトップレベルパスであり、値は SchemaType クラスのインスタンスです。

const schema = new Schema({ name: String }, { _id: false });
schema.paths; // { name: SchemaString { ... } }

schema.add({ age: Number });
schema.paths; // { name: SchemaString { ... }, age: SchemaNumber { ... } }

Schema.prototype.pick()

パラメータ
  • paths «文字列配列» 新しいスキーマで選択するパスのリスト

  • [options] «オブジェクト» 新しいスキーマコンストラクタに渡すオプション (new Schema(.., Options) と同じ)。設定されていない場合は、デフォルトで this.options になります。

戻り値
  • «スキーマ»

このスキーマから選択された paths を持つ新しいスキーマを返します。

このメソッドは、Mongoose スキーマのための Lodash の pick() 関数 に類似しています。

const schema = Schema({ name: String, age: Number });
// Creates a new schema with the same `name` path as `schema`,
// but no `age` path.
const newSchema = schema.pick(['name']);

newSchema.path('name'); // SchemaString { ... }
newSchema.path('age'); // undefined

Schema.prototype.plugin()

パラメータ
  • plugin «関数» プラグインのコールバック

  • [opts] «オブジェクト» プラグインに渡すオプション

    • [opts.deduplicate=false] «真偽値» true の場合、重複するプラグイン (=== を使用した同じ fn 引数) を無視します。

参照

このスキーマのプラグインを登録します。

const s = new Schema({ name: String });
s.plugin(schema => console.log(schema.path('name').path));
mongoose.model('Test', s); // Prints 'name'

または、オプション付きで

const s = new Schema({ name: String });
s.plugin((schema, opts) => console.log(opts.text, schema.path('name').path), { text: "Schema Path Name:" });
mongoose.model('Test', s); // Prints 'Schema Path Name: name'

Schema.prototype.post()

パラメータ
  • methodName «文字列|正規表現|文字列配列» メソッド名またはメソッド名に一致する正規表現

  • [options] «オブジェクト»
    • [options.document] «真偽値» name がドキュメントとクエリミドルウェアの両方のフックである場合、ドキュメントミドルウェアで実行するには true に設定します。

    • [options.query] «真偽値» name がドキュメントとクエリミドルウェアの両方のフックである場合、クエリミドルウェアで実行するには true に設定します。

  • fn «関数» コールバック

参照

ドキュメントのポストフックを定義します。

const schema = new Schema(..);
schema.post('save', function (doc) {
  console.log('this fired after a document was saved');
});

schema.post('find', function(docs) {
  console.log('this fired after you ran a find query');
});

schema.post(/Many$/, function(res) {
  console.log('this fired after you ran `updateMany()` or `deleteMany()`');
});

const Model = mongoose.model('Model', schema);

const m = new Model(..);
m.save(function(err) {
  console.log('this fires after the `post` hook');
});

m.find(function(err, docs) {
  console.log('this fires after the post find hook');
});

Schema.prototype.pre()

パラメータ
  • methodName «文字列|正規表現|文字列配列» メソッド名またはメソッド名に一致する正規表現

  • [options] «オブジェクト»
    • [options.document] «真偽値» name がドキュメントとクエリミドルウェアの両方のフックである場合、ドキュメントミドルウェアで実行するには true に設定します。たとえば、Query#deleteOne() ではなく Document#deleteOne() にこのフックを適用するには、options.documenttrue に設定します。

    • [options.query] «真偽値» name がドキュメントとクエリミドルウェアの両方のフックである場合、クエリミドルウェアで実行するには true に設定します。

  • callback «関数»

モデルのプリフックを定義します。

const toySchema = new Schema({ name: String, created: Date });

toySchema.pre('save', function(next) {
  if (!this.created) this.created = new Date;
  next();
});

toySchema.pre('validate', function(next) {
  if (this.name !== 'Woody') this.name = 'Woody';
  next();
});

// Equivalent to calling `pre()` on `find`, `findOne`, `findOneAndUpdate`.
toySchema.pre(/^find/, function(next) {
  console.log(this.getFilter());
});

// Equivalent to calling `pre()` on `updateOne`, `findOneAndUpdate`.
toySchema.pre(['updateOne', 'findOneAndUpdate'], function(next) {
  console.log(this.getFilter());
});

toySchema.pre('deleteOne', function() {
  // Runs when you call `Toy.deleteOne()`
});

toySchema.pre('deleteOne', { document: true }, function() {
  // Runs when you call `doc.deleteOne()`
});

Schema.prototype.queue()

パラメータ
  • name «文字列» 後で呼び出すドキュメントメソッドの名前

  • args «配列» メソッドに渡す引数

メソッド呼び出しをキューに追加します。

schema.methods.print = function() { console.log(this); };
schema.queue('print', []); // Print the doc every one is instantiated

const Model = mongoose.model('Test', schema);
new Model({ name: 'test' }); // Prints '{"_id": ..., "name": "test" }'

Schema.prototype.remove()

パラメータ
  • path «文字列|配列» 削除するパス

戻り値
  • «スキーマ» スキーマインスタンス

指定された path (または [paths]) を削除します。

const schema = new Schema({ name: String, age: Number });
schema.remove('name');
schema.path('name'); // Undefined
schema.path('age'); // SchemaNumber { ... }

または、配列として

schema.remove(['name', 'age']);
schema.path('name'); // Undefined
schema.path('age'); // Undefined

Schema.prototype.removeIndex()

パラメータ
  • index «オブジェクト|文字列» 名前またはインデックス仕様

戻り値
  • «スキーマ» スキーマインスタンス

名前またはインデックス仕様でインデックスを削除します。

removeIndex はスキーマオブジェクトからインデックスのみを削除します。MongoDB のインデックスには**影響しません**。

const ToySchema = new Schema({ name: String, color: String, price: Number });

// Add a new index on { name, color }
ToySchema.index({ name: 1, color: 1 });

// Remove index on { name, color }
// Keep in mind that order matters! `removeIndex({ color: 1, name: 1 })` won't remove the index
ToySchema.removeIndex({ name: 1, color: 1 });

// Add an index with a custom name
ToySchema.index({ color: 1 }, { name: 'my custom index name' });
// Remove index by name
ToySchema.removeIndex('my custom index name');

Schema.prototype.removeVirtual()

パラメータ
  • path «文字列|配列» 削除する仮想パス。

指定された仮想パスをスキーマから削除します。


Schema.prototype.requiredPaths()

パラメータ
  • invalidate «真偽値» キャッシュを更新する

戻り値
  • «配列»

このスキーマで必須のパス文字列の配列を返します。

const s = new Schema({
  name: { type: String, required: true },
  age: { type: String, required: true },
  notes: String
});
s.requiredPaths(); // [ 'age', 'name' ]

Schema.prototype.searchIndex()

パラメータ
  • description «オブジェクト» namedefinition を含むインデックスオプション

  • description.name «文字列»
  • description.definition «オブジェクト»
戻り値
  • «スキーマ» スキーマインスタンス

Mongoose が Model.createSearchIndex() を使用して作成する Atlas 検索インデックス を追加します。この関数は、MongoDB Atlas に接続されている場合にのみ機能します。

const ToySchema = new Schema({ name: String, color: String, price: Number });
ToySchema.searchIndex({ name: 'test', definition: { mappings: { dynamic: true } } });

Schema.prototype.set()

パラメータ
  • key «文字列» 値を設定するオプションの名前

  • [value] «オブジェクト» オプションに設定する値。渡されない場合、オプションはデフォルトにリセットされます。

  • [tags] «文字列配列» key が 'read' の場合に読み取り設定に追加するタグ

参照

スキーマオプションを設定します。

schema.set('strict'); // 'true' by default
schema.set('strict', false); // Sets 'strict' to false
schema.set('strict'); // 'false'

Schema.prototype.static()

パラメータ
  • name «文字列|オブジェクト» 単一の関数のメソッド名、または「文字列と関数」のペアのオブジェクト。

  • [fn] «関数» 単一関数定義における関数。

参照

このスキーマからコンパイルされたモデルに静的「クラス」メソッドを追加します。

const schema = new Schema(..);
// Equivalent to `schema.statics.findByName = function(name) {}`;
schema.static('findByName', function(name) {
  return this.find({ name: name });
});

const Drink = mongoose.model('Drink', schema);
await Drink.findByName('LaCroix');

名前/関数ペアのハッシュが唯一の引数として渡された場合、各名前/関数ペアはメソッドとして追加されます。

schema.static({
    findByName: function () {..}
  , findByCost: function () {..}
});

const Drink = mongoose.model('Drink', schema);
await Drink.findByName('LaCroix');
await Drink.findByCost(3);

名前/関数ペアのハッシュが唯一の引数として渡された場合、各名前/関数ペアはスタティックとして追加されます。


Schema.prototype.virtual()

パラメータ
  • name «文字列» 仮想の名前

  • [options] «オブジェクト»
    • [options.ref] «文字列|モデル» モデル名またはモデルインスタンス。これを populate virtual としてマークします。

    • [options.justOne=false] «真偽値|関数» populate virtual でのみ機能します。真値 の場合、単一のドキュメントまたは null になります。そうでない場合、populate virtual は配列になります。

    • [options.count=false] «真偽値» populate virtual でのみ機能します。真値 の場合、この populate virtual は populate() するときにドキュメント自体ではなくドキュメントの数を格納します。

    • [options.get=null] «関数|null» populate されたドキュメントを変換するために、この仮想に ゲッター を追加します。

戻り値
  • «仮想タイプ»

指定された名前で仮想タイプを作成します。


Schema.prototype.virtualpath()

パラメータ
  • name «文字列» 取得する仮想の名前

戻り値
  • «仮想タイプ,null»

指定された name の仮想タイプを返します。


Schema.prototype.virtuals

タイプ
  • «プロパティ»

このスキーマで定義されているすべての仮想を含むオブジェクト。オブジェクトのキーは仮想パスであり、値は VirtualType のインスタンスです。

このプロパティは、通常、プラグインの作成者と上級ユーザーにのみ役立ちます。mongooseを使用するために、このプロパティと対話する必要はまったくありません。

const schema = new Schema({});
schema.virtual('answer').get(() => 42);

console.log(schema.virtuals); // { answer: VirtualType { path: 'answer', ... } }
console.log(schema.virtuals['answer'].getters[0].call()); // 42

Schema.reserved

タイプ
  • «プロパティ»

予約済みドキュメントキー。

このオブジェクトのキーは、Mongoose/Mongoose プラグインの機能を損なう可能性があるため、スキーマ宣言で警告される名前です。これらのプロパティ名のいずれかを使用して new Schema() でスキーマを作成すると、Mongoose は警告をログに記録します。

  • _posts
  • _pres
  • collection
  • emit
  • errors
  • get
  • init
  • isModified
  • isNew
  • listeners
  • modelName
  • on
  • once
  • populated
  • prototype
  • remove
  • removeListener
  • save
  • schema
  • toObject
  • validate

注: これらの用語をメソッド名として使用することは許可されていますが、既存の Mongoose ドキュメントメソッドを踏みつける可能性があるため、自己責任で使用してください。

 const schema = new Schema(..);
 schema.methods.init = function () {} // potentially breaking