【问题标题】:Mongoose property filter猫鼬属性过滤器
【发布时间】:2013-10-28 07:52:36
【问题描述】:

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

【问题讨论】:

    标签: javascript node.js mongoose


    【解决方案1】:

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

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

    你有几个合理的选择:

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

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

    【讨论】:

    • 是的 - 这也是我发现的。我对虚拟机很好——习惯了他们的怪癖。只是希望对获取进行一些自动预处理,就像保存一样。
    • 问题是......你真的不想在加载数据时更改它。你只希望它对消费者的外观发生变化。那不一样。你真的想保留“原始”数据。
    • 是的,我同意-我目前的情况是我需要修改一些数据-事情是我们在很多地方都使用过。因此,我可以在整个地方进行更改(即添加一些过滤),也可以根据需要处理一次。
    猜你喜欢
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 2017-12-31
    • 1970-01-01
    • 2022-01-26
    • 2020-11-05
    • 2018-07-15
    • 2019-12-29
    相关资源
    最近更新 更多