我根据how should i store a price in mongoose?
的答案在我的Mongoose架构中存储价格值我的架构定义中有以下代码:
price: {
value: {
type: Number,
get: getPrice,
set: setPrice,
min: 0
},
currency: {
type: String,
default: 'PLN',
trim: true,
enum: ['PLN', 'EUR']
}
},
和我的获取功能:
function getPrice(num){
return (num/100).toFixed(2);
}
但是,无论何时调用此getter函数,我都可以看到未定义的num参数。
你知道这可能是什么原因吗?我怎么能解决这个问题?
答案 0 :(得分:1)
为值添加默认值零。另外,对于不在数组中的子文档,mongoose是非常糟糕的,这可能导致这个问题。
value: {
type: Number,
get: getPrice,
set: setPrice,
min: 0,
default: 0
},
答案 1 :(得分:1)
如果getter / setter为你提供了mongoose模型的问题,请使用mongoose模式中的本地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();
是一种非常干净的方法。