【发布时间】:2013-10-28 07:52:36
【问题描述】:
我正在为现有属性寻找等效的虚拟对象。我想在调用它时修改现有模式属性的值(例如条形标签或其他)。我目前正在使用具有不同名称的虚拟来实现此目的。显然,当虚拟与现有属性同名时,Mongoose 会中断。似乎没有任何前置/后取过滤器 - 建议?
【问题讨论】:
标签: javascript node.js mongoose
我正在为现有属性寻找等效的虚拟对象。我想在调用它时修改现有模式属性的值(例如条形标签或其他)。我目前正在使用具有不同名称的虚拟来实现此目的。显然,当虚拟与现有属性同名时,Mongoose 会中断。似乎没有任何前置/后取过滤器 - 建议?
【问题讨论】:
标签: javascript node.js mongoose
假设您说您的“外部”格式与内部存储的格式不同...
如果不深入了解 Mongoose 的内部结构,就无法以 100% 一致的方式完全覆盖 get/set。我最近对此进行了一些探索,这是一个很深的黑洞。 :(
你有几个合理的选择:
_color 的属性,然后将其公开为color,而不是尝试重载相同的值。然后,很明显(可能按照惯例),下划线前缀值是“仅供内部使用”。toColorString 或类似的函数,以便清楚何时/如何使用它。 如果您使用虚拟/隐藏属性,则查询文档会更加混乱,因为该属性不会以相同的名称或以与查询数据相同的方式公开。所以,这就是为什么如果可能的话,我会倾向于使用自定义函数来获取给定属性/字段的自定义格式版本。
【讨论】: