将 id 数组作为文档的一部分时选择哪种关系类型

Which relation type to choose when having array of ids as part of the document

每个订单都有 productIds 属性,它是一个 productIds 数组,如下所述。 我应该如何实现 StrongLoop \ Loopbck 3 中的关系?

我在 document 中找不到我应该选择的正确关系类型。 我正在使用 MongoDB.

Orders

{
  "_id": "5bc9eed3336746028d88651f",
  "name": "My Order",  
  "createdAt": "2018-10-19T14:48:50.961Z",
  "updatedAt": "2018-11-21T09:57:34.729Z",
  "currency": "EUR",  
  "productIds": ["5f16de532b3fa13644bdf513", "5f170559afcb6d3644ee4f1e"]
}

Products
{
  "_id": "5f16de532b3fa13644bdf513",
  "name": "Product One",  
  "createdAt": "2018-10-19T14:48:50.961Z",
  "updatedAt": "2018-11-21T09:57:34.729Z"
}

{
  "_id": "5f170559afcb6d3644ee4f1e",
  "name": "Product Two",  
  "createdAt": "2018-10-19T14:48:50.961Z",
  "updatedAt": "2018-11-21T09:57:34.729Z"
}

这真的取决于你是否需要从产品到相应订单的参考。

案例一: 如果您需要它并且产品可以与许多订单相关,那么正确的关系是 ManyToMany。对于 lb3 和这种类型的关系,您可以使用 hasAndBelongsToMany relation.

案例二: 如果您需要,并且每个产品都可以与一个订单相关,那么请使用 hasMany 关系。

案例三: 如果您不需要它,那么最好的选择是 referencesMany,因为它允许在不影响产品实例的情况下将订单连接到相应的产品。

根据您的描述,我猜案例 3 与您要构建的内容相匹配,所以我会选择 referencesMany.

示例定义:

{
  "name": "Order",
  "base": "PersistedModel",
  "idInjection": true,
  "properties": {
    "name": "string"
  },
  "relations": {
    "products": {
      "type": "referencesMany",
      "model": "Product",
      "foreignKey": "productIds"
    }
...
}