10

短く明確:スキーマフィールドの設定を防ぎ、値の取得を許可する方法はありますか?

私はマングースのドキュメンテーションを見てきましたが、探しているものが見つかりません。

4

4 に答える 4

16

変更できないデフォルト値を設定する場合の代替方法:

var schema = new Schema({
  securedField: {
    type: String,
    default: 'Forever',
    set: function (val) { return this.securedField; }
});
于 2015-04-02T20:38:32.627 に答える
3

フィールドを従来のフィールドではなく仮想ゲッターとして定義します。

popたとえば、 Mongoose経由でアクセスするときに、コレクションのフィールドを読み取り専用にしたいとします。

var schema = new Schema({
    city: String,
    state: String
});

schema.virtual('pop').get(function() {
    return this._doc.pop;
});

モデルインスタンスのプライベートメンバーにアクセスする_docことで、将来これが機能しなくなる可能性がありますが、今テストしたところ、これは正常に機能しました。

于 2012-11-26T14:33:12.830 に答える
2

マングース5.6以降、次のことができます。immutable: true

var schema = new Schema({
  securedField: {
    type: String,
    default: 'Forever',
    immutable: true
  }
});
于 2019-12-10T04:34:24.983 に答える
0

デフォルト値と同じ値の設定から戻ることができます。_thisドキュメントを参照する必要はありません。

var schema = new Schema({
  securedField: {
    type: String,
    default: 'Forever',
    set: () => 'Forever'
});
于 2018-11-28T09:28:43.927 に答える