我想做的是这样的:
Schema
.virtual('getSomething')
.get(function(what) {
if (!what) {
return this.somethingElse
} else {
return this.something[what]
}
})
问题是我们不能在虚拟 getter 中传递参数,我怎样才能在不复制代码的情况下实现这样的目标?
将其添加为实例方法而不是虚拟 getter。
schema.methods.getSomething = function(what) {
if (!what) {
return this.somethingElse
} else {
return this.something[what]
}
};
Getter 不接受任何参数,因为它们应该替换正常的“获取属性”功能,不带括号。所以你需要定义一个方法:
Schema.methods.getSomething = function(what) {
if (!what) {
return this.somethingElse;
} else {
return this.something[what];
}
};
然后你可以简单地调用:
mySchemaObject.getSomething( "test" );