Mongoose属性filter

我正在寻找相当于现有物业的虚拟物品。 我想修改一个现有的模式属性的值,当我打电话(如条形标签或其他)。 我目前正在使用一个不同的名字来实现这一点。 显然,当虚拟与现有属性具有相同的名称时,Mongoose会中断。 似乎没有任何前/后获取filter – build议?

假设你说你有一个不同的“外部”格式比内部存储…

没有深入到mongoose的内部,没有办法以100%一致的方式完全覆盖get / set。 我最近做了一些探索,这是一个深深的黑洞。 🙁

你有几个合理的select:

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

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