Jed*_*son 5 javascript performance mongoose node.js
我开始在现实世界的应用程序中使用 Mongoose 中的虚拟 getter 方法,我想知道使用它们是否会对性能产生影响,最好预先了解一下。
例如:
var User = new Schema({
name: {
first: String,
last: String
}
});
User.virtual('name.full').get(function () {
return this.name.first + ' ' + this.name.last;
});
Run Code Online (Sandbox Code Playgroud)
基本上,我还不明白 getter 是如何生成到 Mongoose 使用的对象中的,以及这些值是在对象初始化时还是按需填充。
__defineGetter__ 可用于将属性映射到 Javascript 中的方法,但 Mongoose 似乎并未将其用于虚拟 getter(基于对代码的快速搜索)。
另一种方法是在初始化时填充每个虚拟路径,这意味着对于上面示例中的 100 个用户,连接名字和姓氏的方法被调用 100 次。
(我使用的是一个简化的例子,getter 可能要复杂得多)
检查原始对象本身(例如 using console.dir)有点误导,因为 Mongoose 使用内部方法来处理将对象转换为“普通”对象或 JSON,默认情况下不包括 getter。
如果有人能阐明这是如何工作的,以及是否有大量 getter 可能会成为大规模问题,我将不胜感激。
他们可能是使用标准方式完成的:
Object.defineProperty(someInstance, propertyName, {get: yourGetter});
Run Code Online (Sandbox Code Playgroud)
...意思是“不在初始化时”。我认为,在初始化时读取虚拟属性会破坏虚拟属性的意义。
| 归档时间: |
|
| 查看次数: |
1099 次 |
| 最近记录: |