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

Mongoose getter is getting undefined parameter

本文关键字:未定义 参数 获取 getter Mongoose      更新时间:2023-09-26

我正在Mongoose模式中存储一个价格值,根据我应该如何在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参数是未定义的。

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

为值添加默认值零。此外,mongoose对不在数组中的子文档非常糟糕,这可能导致了这个问题。

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

如果getter/setters给您带来了mongose模型的问题,请使用mongose模式中的本地静态方法:

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

是一种非常干净的方法。