0

想象一个销售订单模型,如下所示:

create table sales_orders(
  id int primary key,
  order_date date,
  customer_party_id int not null references parties,
  sales_party_id int not null references parties
);

create table parties (
  id int primary key,
  type text check (type in 'individuals', 'organizations'),
  given_name text,
  surname text,
  org_name text
);

在这种情况下如何建模 JSData 关系?

显然,我不能这样做:

store.defineMapper("sales_orders", {
    relations:{
        belongsTo:{
            parties:{
                foreignKey:"customer_party_id",
                localField:"customer_party"
            },
            parties:{
                foreignKey:"sales_party_id",
                localField:"sales_party"
            }
        }
    }
});

我可以重命名 belongsTo 字段之一,这适用于读取,但不适用于写入...(使用 JSONAPI 适配器)

4

2 回答 2

0

type好的,当您在派对桌上有两个外键来区分客户与销售时,为什么要使用两个外键?除非此列用于其他内容,否则您可以再创建一个 ex。party_type为了这个目的。

我建议您删除其中一列,将其余一列重命名为party_id,然后您应该为这两个表定义Mapper

store.defineMapper('parties', {
    relations: {
        hasMany: {
            sales_orders: {
                foreignKey: 'party_id',
                localField: 'party'
            }
        }
    }
});
store.defineMapper('sales_orders', {
    relations: {
        belongsTo: {
            parties: {
                foreignKey: 'party_id',
                localField: 'party'
            }
        }
    }
});
  
于 2021-01-29T21:33:48.563 回答
0

我不知道这是否算作一个答案,但这是我唯一可以放置代码的地方。:) 我不清楚是什么消耗了您发送的对象,但我希望您能够将您的各方作为数组传递,如下所示:

store.defineMapper("sales_orders", {
relations:{
    belongsTo:{
        parties:[{
            foreignKey:"customer_party_id",
            localField:"customer_party"
        },
        {
            foreignKey:"sales_party_id",
            localField:"sales_party"
        }]
    }
}

});

这是一个选项吗?

于 2021-01-29T18:16:52.590 回答