繁体   English   中英

如何在解析中创建嵌套的多对多关系

[英]How to create nested Many to Many relations in parse

我的网上商店基本上有 2 个 Parse 类:产品和订单。 当用户填充他的购物车时,我在一个本地项目数组(javascript 对象)中反映了这一点,其中包含产品的属性(解析类)和购物车中特定产品应具有的数量的另一个属性。

如果我现在保存要解析的订单(我使用的是 parse-server 的自托管开源版本),我最终会得到一个这样的订单对象:

{
  "_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可能是多余的,而 price 属性与 product 保持一致。 当产品添加到订单时,应用程序会将产品价格复制到此字段。 如果在创建订单后产品价格发生变化,这将支持业务逻辑决策。

订单查询可以include('lineItems', 'lineItems.product')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM