javascript - Mongoose :缓存虚拟

标签 javascript node.js mongodb mongoose

在我的 Mongoose 架构中,我有一个根据文档中的各种属性计算的虚拟。

其他虚拟使用这个虚拟,所以我希望缓存这个昂贵的计算。

最佳答案

是的。

只需将计算结果设置为不保存到数据库的属性即可。下次调用虚拟函数时,返回该属性。

schema.virtual('x').get(function() {
  if (this._x) return this._x;
  var x = expensiveCalculation();
  this._x = x;
  return x;
});

请注意,如果计算取决于文档的其他属性,如果您更改这些属性,则必须使缓存无效。您可以为那些为您执行此操作的属性定义 setter。

var schema = new Schema({
  someProp: { type: Number, set: invalidateVirtualXCache } 
});

function invalidateVirtualXCache(val) {
  this._x = void(0);
  return val;
}

关于javascript - Mongoose :缓存虚拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37823847/

相关文章:

javascript - RadWindow 未在客户端上打开

javascript - 导出字符串化后,fabricjs 将不会导入背景图像

javascript - 复选框的行为类似于单选框 javascript

JavaScript 单元测试 : where to keep test/specs files (Client and Node)

node.js - 无法使用 mongoose 通过 Node 脚本保存 mongodb 记录

mongodb - 在 MongoDB 中使用 $all 匹配数组值的多个 $elemMatch 表达式?

javascript - 操作 Json(传递到 View 之前)

node.js - Nodejs 'fs' 方法异步运行

javascript - 为什么在 Node.js 中使用方法覆盖包来隐藏字段?

javascript - meteor 中的多个数据库保持 react 性