2012-11-25 7 views

答えて

2

従来のフィールドではなく、virtualゲッターとしてフィールドを定義します。それは、この中に破損することが可能ですあなたのモデルインスタンスのプライベート_docメンバーにアクセスすることにより

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

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

例えば

は、あなたがマングースを介してアクセス読み取り専用コレクションのpop場を作りたかったと言います未来だが、これを今テストしたところ、これはうまくいきました。

+0

この仕事をどうしますか?バーチャルは永続化されません。 – sidgate

+1

@sidgateこれは古い回答であり、スキーマに定義されていないフィールドを公開するためのハックですが、基礎となるドキュメントには存在します。だから、バーチャルが永続化されないのは正しいですが、 'pop'フィールドはすでにそこにあるので、(文書化されていない)' _doc'フィールドを介して生の文書が利用可能であるために動作します。 – JohnnyHK

11

代替あなたが変更することはできませんデフォルト値を設定する場合:

var schema = new Schema({ 
    securedField: { 
    type: String, 
    default: 'Forever', 
    set: function (val) { return this.securedField; } 
}); 
関連する問題