我将Mongoose用作软件包的一部分,节省了大量时间。
我正在使用的软件包为https://github.com/florianholzapfel/express-restify-mongoose。当我查询Mongodb,并且我有一个Decimal128类型时,它将返回如下值:
{
"sku": "shGHYB12-60-LOZ",
"name": "Prd",
"size": "60",
"buyPrice": {
"$numberDecimal": "12.55"
}
}
当它在Mongoose对象中时,哪个还可以,但是当我在Rest API上公开它时(此包使用restify),它只是一个json表示形式。
如果我在Patch或Put请求中通过REST Api将其重新发布-就像字符串或数字(请参见下文)一样,它可以正常工作并将其存储在数据库中,并使用Mongoose模型正确翻译。
{
"sku": "shGHYB12-60-LOZ",
"name": "Prd",
"size": "60",
"buyPrice": "12.5995"
}
猫鼬模型的一部分就是这样
"buyPrice": {
"type": "Decimal"
}
如何将其存储为MongoDb中的十进制类型,但在REST上将其公开为数字?我只是不确定如何去做。
我猜可能发生的3个领域是
我都不是太熟悉。感谢您的宝贵时间。
答案 0 :(得分:0)
在声明架构之前,先创建一个辅助函数:
function getMoney(value) {
return parseFloat(value.toString());
}
像这样在您的字段中添加吸气剂:
price: {
type: Schema.Types.Decimal128,
get: getMoney
},
答案 1 :(得分:0)
以下作品:
function getFloat(value) {
return value && value['$numberDecimal'] ? value['$numberDecimal'] : 0;
}
用法示例:
getFloat(obj1.buyPrice)