我的网上商店基本上有2个Parse课程:产品和订单。 当用户填写他的购物车时,我在本地数组项目(javascript对象)中反映了该产品的属性(解析类)以及特定产品应该在购物车中的数量的另一个属性。
如果我现在保存要解析的订单(我使用自托管开源版本的parse-server),我最终会得到一个这样的订单对象:
return
我的问题是,我无法找到查询结果已包含产品的订单的方法。
我目前唯一能想到的方法是摆脱金额,这样我就不必将产品类嵌套在JS对象中。然后在必要时多次向阵列添加产品。
类似的东西:
{
"_id": "8XK6gbZZvE",
"items": [
{
"amount": 3,
"product": {
"__type": "Pointer",
"className": "Product",
"objectId": "VWOxzFui6R"
}
}
],
"total": 1800,
"status": "pending",
...
}
然后允许我在订单查询中包含商品,例如{
"_id": "6j7l5acSB3",
"items": [
{
"__type": "Pointer",
"className": "Product",
"objectId": "VWOxzFui6R"
}
],
"total": 1210,
"status": "processing",
...
}
但是,还有一个解决方案,我可以使用像我的第一个结构,并仍然能够在订单查询中包含产品吗?这种感觉和多余的#34;如果用户订购此产品,则在阵列中多次使用相同的产品,例如2或3次。
答案 0 :(得分:1)
在大多数电子商务系统中这样做的方法是让另一个对象将数据添加到订单和产品之间的关系中,例如......
// Order
{ lineItems: [ <pointer to line item>, < etc > ],
orderTotal: number,
// other fields: probably a customer-pointer, tax, shipping, etc
};
// Line Item - this is the missing concept in the OP
{ product: <pointer to product>,
unitPrice: number,
quantity: number
};
// Product as you have it
请注意,unitPrice
可能是多余的,并且产品保留了price属性。当产品添加到订单时,应用程序会将产品价格复制到此字段。这使得业务逻辑决策能够在创建订单后产品价格发生变化时做出决定。
订单查询可以include('lineItems', 'lineItems.product')