2014-04-09 69 views
3

我根據答案在我的貓鼬架構存儲從how should i store a price in mongoose?貓鼬吸氣越來越不確定參數

的價格值我在我的模式定義如下代碼:

price: { 
     value: { 
      type: Number, 
      get: getPrice, 
      set: setPrice, 
      min: 0 
     }, 
     currency: { 
      type: String, 
      default: 'PLN', 
      trim: true, 
      enum: ['PLN', 'EUR'] 
     } 
}, 

和我的GET功能:

function getPrice(num){ 
    return (num/100).toFixed(2); 
} 

但是,無論何時調用此getter函數,我都可以看到num參數中的undefined。

你知道可能是什麼原因嗎?我怎麼能解決這個問題?

+0

你有哪些getPrice函數? –

+0

與模式定義相同的文件,但在定義本身之外。 – Jakub

+0

對於沒有該字段的文檔,仍然會調用您的getter函數。在這種情況下'num'將會是'undefined'。可能這就是你所看到的? – JohnnyHK

回答

1

爲值添加默認值零。此外,貓鼬對於不在數組內的子文檔非常不好,這可能會導致這個問題。

value: { 
     type: Number, 
     get: getPrice, 
     set: setPrice, 
     min: 0, 
     default: 0 
    }, 
+0

剛剛嘗試過,不幸的是它並沒有解決問題。 getPrice函數中的num仍設置爲undefined。 – Jakub

1

如果的getter/setter方法給你用貓鼬模型問題,使用本機static methods在貓鼬模式:

mySchema.static('getPrice', function(){ 
    //'this' in the context means a document that shares the schema 
    return (this.price.value/100).toString(2); 
}); 

您可以調用說模式中的任何文件中的方法:

var myPrice = oneMongooseDocument.getPrice(); 

是一個非常乾淨的方法。