4

私がやろうとしていることはそのようなものです:

Schema
.virtual('getSomething')
.get(function(what) {
    if (!what) {
        return this.somethingElse
    } else {
        return this.something[what]
    }
})

問題は、仮想ゲッターで引数を渡すことができないということです。コードを複製せずに、どうすればそのようなことを実現できますか?

4

2 に答える 2

9

仮想ゲッターの代わりにインスタンスメソッドとして追加します。

schema.methods.getSomething = function(what) {
    if (!what) {
        return this.somethingElse
    } else {
        return this.something[what]
    }
};
于 2012-11-26T14:39:11.567 に答える
4

ゲッターは、角かっこなしで通常の「属性の取得」機能を置き換えることになっているため、引数を受け入れません。したがって、必要なのはメソッドを定義することです。

Schema.methods.getSomething = function(what) {
    if (!what) {
        return this.somethingElse;
    } else {
        return this.something[what];
    }
};

そして、あなたは単に呼び出すことができます:

mySchemaObject.getSomething( "test" );
于 2012-11-26T14:39:29.327 に答える