既存のプロパティの仮想に相当するものを探しています。呼び出すときに既存のスキーマ プロパティの値を変更したいと考えています (ストリップ タグなど)。現在、これを実現するために別の名前の仮想を使用しています。仮想が既存のプロパティと同じ名前を持つと、明らかに Mongoose が壊れます。プリ/ポスト フェッチ フィルターではないようです - 提案はありますか?
質問する
286 次
1 に答える
2
内部に保存されているものとは異なる「外部」形式を持っていると言っていると仮定すると...
Mongoose の内部を深く掘り下げることなく、100% 一貫した方法で get/set を完全にオーバーライドする方法はありません。私は最近そのことを調査しましたが、それは深い闇の穴です。:(
合理的なオプションがいくつかあります。
- 仮想財産アプローチ。同じ値をオーバーロードしようとするのではなく、実際にプロパティを呼び出し
_color
てから、たとえばそれを公開することができます。color
次に、アンダースコアのプレフィックス付きの値が「内部使用のみ」であることは明らかです(おそらく慣例による)。 - 値を取得/設定する関数を追加します (関数をスキーマに追加することにより)。
toColorString
いつ/どのように使用するかが明確になるように、呼び出された関数またはそのようなものを追加できるので、これが気に入っています。
仮想/非表示のプロパティを使用すると、プロパティが同じ名前またはデータがクエリされるのとまったく同じ方法で公開されないため、ドキュメントのクエリが少し混乱します。そのため、可能であればカスタム関数を使用して、特定のプロパティ/フィールドのカスタム形式のバージョンを取得することに少し傾倒します。
于 2013-10-27T22:41:16.657 に答える