2013-10-27 188 views
1

我正在寻找相当于现有属性的虚拟物。我想在我称之为现有模式属性时修改一个值(如条形标签或其他)。我目前使用一个不同名称的虚拟来实现这一点。显然,当虚拟与现有属性具有相同的名称时,Mongoose会中断。似乎没有任何前/后获取过滤器 - 建议?猫鼬属性过滤器

回答

2

假设你是说你有比内部存储不同的“外部”格式...

有没有办法完全覆盖GET /在100%一致的方式,而不设定跳水深成猫鼬内部。我最近做了一些探索,这是一个深深的黑洞。 :(

你有几个合理的选择:

  1. 虚拟财产的方法你可以有一个居然叫_color属性,然后公开为color例如,而不是试图超载相同的值。然后,很明显(也许通过约定),下划线前缀值是“仅供内部使用”。
  2. 添加函数以获取/设置值(通过向模式添加函数)。我喜欢这一个,你可以添加一个叫toColorString或者类似的东西,这样就可以清楚何时/如何使用它。

如果您使用虚拟/隐藏属性,它会使查询文档有点混乱,因为该属性不会以相同名称或以与查询数据完全相同的方式显示。所以,这就是为什么我会倾向于使用自定义函数来尽可能地获取给定属性/字段的自定义格式化版本。

+0

雅 - 这是我发现的。我对虚拟技术很好 - 习惯了他们的怪癖。只是希望能进行一些自动的预处理,就像保存一样。 – cyberwombat

+0

事情是......你并不是真的想在加载数据时改变它。你只希望它的外观给消费者改变。那不一样。你真的想保留“原始”数据。 – WiredPrairie

+0

是的,我同意 - 我目前的情况是我需要修改一些数据 - 事情就是我们在很多地方使用它。所以我可以在任何地方改变它(即添加一些过滤)或者按照我的意愿处理它。 – cyberwombat