Mongoose getter正在获取未定义的参数

时间:2014-04-09 13:10:23

标签: javascript node.js mongodb mongoose

我根据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参数。

你知道这可能是什么原因吗?我怎么能解决这个问题?

2 个答案:

答案 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();

是一种非常干净的方法。