短く明確:スキーマフィールドの設定を防ぎ、値の取得を許可する方法はありますか?
私はマングースのドキュメンテーションを見てきましたが、探しているものが見つかりません。
変更できないデフォルト値を設定する場合の代替方法:
var schema = new Schema({
securedField: {
type: String,
default: 'Forever',
set: function (val) { return this.securedField; }
});
フィールドを従来のフィールドではなく仮想ゲッターとして定義します。
pop
たとえば、 Mongoose経由でアクセスするときに、コレクションのフィールドを読み取り専用にしたいとします。
var schema = new Schema({
city: String,
state: String
});
schema.virtual('pop').get(function() {
return this._doc.pop;
});
モデルインスタンスのプライベートメンバーにアクセスする_doc
ことで、将来これが機能しなくなる可能性がありますが、今テストしたところ、これは正常に機能しました。
マングース5.6以降、次のことができます。immutable: true
var schema = new Schema({
securedField: {
type: String,
default: 'Forever',
immutable: true
}
});
デフォルト値と同じ値の設定から戻ることができます。_thisドキュメントを参照する必要はありません。
var schema = new Schema({
securedField: {
type: String,
default: 'Forever',
set: () => 'Forever'
});