1

我正在为现有属性寻找等效的虚拟对象。我想在调用它时修改现有模式属性的值(例如条形标签或其他)。我目前正在使用具有不同名称的虚拟来实现此目的。显然,当虚拟与现有属性同名时,Mongoose 会中断。似乎没有任何前置/后取过滤器 - 建议?

4

1 回答 1

2

假设您说您的“外部”格式与内部存储的格式不同......

如果不深入了解 Mongoose 的内部结构,就无法以 100% 一致的方式完全覆盖 get/set。我最近对此进行了一些探索,这是一个很深的黑洞。:(

你有几个合理的选择:

  1. 虚拟财产方法。例如,您可以实际调用一个属性_color,然后将其公开,color而不是尝试重载相同的值。然后,很明显(可能按照惯例),下划线前缀值是“仅供内部使用”。
  2. 添加一个函数来获取/设置值(通过向 Schema 添加一个函数)。我喜欢这个,因为您可以添加一个名为toColorString或类似的函数,以便清楚何时/如何使用它。

如果您使用虚拟/隐藏属性,它会使查询文档变得更加混乱,因为该属性不会以相同的名称或以与查询数据相同的方式公开。所以,这就是为什么如果可能的话,我会倾向于使用自定义函数来获取给定属性/字段的自定义格式版本。

于 2013-10-27T22:41:16.657 回答