2013-10-27 240 views
1

我正在尋找相當於現有屬性的虛擬物。我想在我稱之爲現有模式屬性時修改一個值(如條形標籤或其他)。我目前使用一個不同名稱的虛擬來實現這一點。顯然,當虛擬與現有屬性具有相同的名稱時,Mongoose會中斷。似乎沒有任何前/後獲取過濾器 - 建議?貓鼬屬性過濾器

回答

2

假設你是說你有比內部存儲不同的「外部」格式...

有沒有辦法完全覆蓋GET /在100%一致的方式,而不設定跳水深成貓鼬內部。我最近做了一些探索,這是一個深深的黑洞。 :(

你有幾個合理的選擇:

  1. 虛擬財產的方法你可以有一個居然叫_color屬性,然後公開爲color例如,而不是試圖超載相同的值。然後,很明顯(也許通過約定),下劃線前綴值是「僅供內部使用」。
  2. 添加函數以獲取/設置值(通過向模式添加函數)。我喜歡這一個,你可以添加一個叫toColorString或者類似的東西,這樣就可以清楚何時/如何使用它。

如果您使用虛擬/隱藏屬性,它會使查詢文檔有點混亂,因爲該屬性不會以相同名稱或以與查詢數據完全相同的方式顯示。所以,這就是爲什麼我會傾向於使用自定義函數來儘可能地獲取給定屬性/字段的自定義格式化版本。

+0

雅 - 這是我發現的。我對虛擬技術很好 - 習慣了他們的怪癖。只是希望能進行一些自動的預處理,就像保存一樣。 – cyberwombat

+0

事情是......你並不是真的想在加載數據時改變它。你只希望它的外觀給消費者改變。那不一樣。你真的想保留「原始」數據。 – WiredPrairie

+0

是的,我同意 - 我目前的情況是我需要修改一些數據 - 事情就是我們在很多地方使用它。所以我可以在任何地方改變它(即添加一些過濾)或者按照我的意願處理它。 – cyberwombat