如何在解析中创建嵌套的多对多关系
How to create nested Many to Many relations in parse
我的网上商店基本上有 2 个 Parse 类:产品和订单。当用户填满他的购物车时,我反映在本地项目数组(javascript 对象)中,其中包含产品的属性(parse 类)和特定产品在购物车中应具有的数量的另一个属性。
如果我现在保存要解析的订单(我使用的是解析服务器的自托管开源版本),我最终会得到一个如下所示的订单对象:
{
"_id": "8XK6gbZZvE",
"items": [
{
"amount": 3,
"product": {
"__type": "Pointer",
"className": "Product",
"objectId": "VWOxzFui6R"
}
}
],
"total": 1800,
"status": "pending",
...
}
我的问题是我找不到一种方法来查询结果已经包含产品的订单。
我目前能想到的唯一方法是摆脱数量,这样我就不必将产品类嵌套在 JS 对象中。然后,如有必要,只需将产品多次添加到阵列中即可。
像这样:
{
"_id": "6j7l5acSB3",
"items": [
{
"__type": "Pointer",
"className": "Product",
"objectId": "VWOxzFui6R"
}
],
"total": 1210,
"status": "processing",
...
}
然后,这允许我将项目包含在订单查询中,如下所示query.include('items');
但是,是否也有一个解决方案,如何使用像我的第一个结构并且仍然能够在订单查询中包含产品?如果用户订购了该产品,例如 2 或 3 次,则在阵列中多次使用同一产品感觉有点"多余"。
在大多数电子商务系统中完成此操作的方式是使用另一个对象将数据添加到订单和产品之间的关系中,例如......
// 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
可能是多余的,价格属性与产品一起保留。 将产品添加到订单时,应用会将产品价格复制到此字段。 这使业务逻辑能够决定在创建订单后产品价格更改时该怎么做。
订单查询可以include('lineItems', 'lineItems.product')
相关文章:
- requirejs定义:嵌套依赖关系
- Ember.js Ember数据呈现双嵌套hasMany关系
- 解析云代码-使用关系数据嵌套多个查询
- 如何在解析中创建嵌套的多对多关系
- 您如何处理 Angular2 中嵌套组件的依赖关系
- 在 Sails.js(吃水线)中的嵌套字段(关系内)上的搜索结果
- 如何处理嵌套在关系模型中的集合
- 平均堆栈:如何为嵌套关系创建路由
- emberJS 2:用于操作的嵌套关系资源(更新和删除)
- 嵌套模型上的主干关系
- 当服务中存在嵌套的承诺关系时,AngularJS的行为很奇怪
- Ember&RSVP:如何解决路由中的嵌套关系's模型函数
- Parse(js)和嵌套查询中的一对多关系
- 如何在Backbone.js中使用嵌套视图解决循环依赖关系
- Ember.js计算嵌套关系的属性
- 骨干关系——深度嵌套模型/集合
- 与Sequelize的嵌套关系
- 流星可以处理嵌套的依赖关系吗?
- 如何使用Sails.js扩展REST API中的嵌套关系?
- Waterline/SailsJs防止嵌套(关系)保存模型