在虚拟getter中添加参数

Cal*_*ein 3 virtual mongoose node.js

我想做的是这样的:

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

问题是我们不能在虚拟getter中传递参数,如何在不重复代码的情况下实现类似的东西呢?

Joh*_*yHK 7

将其添加为实例方法而不是虚拟getter.

schema.methods.getSomething = function(what) {
    if (!what) {
        return this.somethingElse
    } else {
        return this.something[what]
    }
};
Run Code Online (Sandbox Code Playgroud)

  • 实际上它不是虚拟道具的替代品,它们是完全不同的[虚拟道具在模型中持续存在,但原型方法不会传递给请求者],但OP似乎并不在意 (2认同)