1

既存のプロパティの仮想に相当するものを探しています。呼び出すときに既存のスキーマ プロパティの値を変更したいと考えています (ストリップ タグなど)。現在、これを実現するために別の名前の仮想を使用しています。仮想が既存のプロパティと同じ名前を持つと、明らかに Mongoose が壊れます。プリ/ポスト フェッチ フィルターではないようです - 提案はありますか?

4

1 に答える 1

2

内部に保存されているものとは異なる「外部」形式を持っていると言っていると仮定すると...

Mongoose の内部を深く掘り下げることなく、100% 一貫した方法で get/set を完全にオーバーライドする方法はありません。私は最近そのことを調査しましたが、それは深い闇の穴です。:(

合理的なオプションがいくつかあります。

  1. 仮想財産アプローチ。同じ値をオーバーロードしようとするのではなく、実際にプロパティを呼び出し_colorてから、たとえばそれを公開することができます。color次に、アンダースコアのプレフィックス付きの値が「内部使用のみ」であることは明らかです(おそらく慣例による)。
  2. 値を取得/設定する関数を追加します (関数をスキーマに追加することにより)。toColorStringいつ/どのように使用するかが明確になるように、呼び出された関数またはそのようなものを追加できるので、これが気に入っています。

仮想/非表示のプロパティを使用すると、プロパティが同じ名前またはデータがクエリされるのとまったく同じ方法で公開されないため、ドキュメントのクエリが少し混乱します。そのため、可能であればカスタム関数を使用して、特定のプロパティ/フィールドのカスタム形式のバージョンを取得することに少し傾倒します。

于 2013-10-27T22:41:16.657 に答える