获取所有具有关系的资源时如何显示来自另一个微服务的关系

吉米

我只想在我的电子商务项目中实现微服务。如果我有 2 个微服务,它们是单独的项目、数据库和服务器中的产品微服务和事务微服务。数据库设计是这样的:

products table:
id
name
code
price
...

transactions table:
id
product_id
qty
price
...

问题是:如何制作与产品相关的获取所有交易 API?因为产品在另一个项目和数据库中?我应该获取所有交易,循环并调用获取产品详细信息,然后将产品密钥一一设置为产品对象吗?或者有什么最好的解决方法吗?谢谢。

我想返回这样的东西,因为我希望这个 API 返回产品关系以在交易列表前端显示产品。

{
  "transactions": [
    {
      "id": 1,
      "product": {
        "id": 1,
        "name": "Bottle",
        "code": "B1",
        "price": 50000
      },
      "qty": 1,
      "price": 50000
    }, {
      "id": 2,
      "product": {
        "id": 2,
        "name": "Cable",
        "code": "C1",
        "price": 20000
      },
      "qty": 1,
      "price": 20000
    } 
  ]
}
汤姆雷德芬

在进行面向服务时最难理解的事情之一是隔离和自治的好处是有代价的。该成本是数据重复。在微服务架构中避免数据重复是极其困难的。

然而,数据重复并不总是坏事。事实上,您可能会争辩说数据重复是一个重要的推动因素。将数据复制视为好而不坏与常识和传统软件培训背道而驰,但是您需要适应这种心态才能在微服务上取得成功。

在您上面的模型中,如果您想与一些产品数据一起显示您的交易,那么您将需要将该产品数据存储在与您的交易相同的数据库中,即交易服务数据库。

回答不可避免的问题“产品数据如何到达那里?” - 有必要在之前的某个时间添加产品数据,最好是在首次创建产品时。

如果我想更新产品,我是否也应该在交易服务上进行更改?

是的,这是正确的,但前提是您关心变化(从交易的角度来看)。如果您在交易中不关心产品上的某些更改,则不要更新。

我们怎么知道哪个部分需要有重复数据/没有?

这是基于您查看交易的要求。关键是:一旦你复制了你的产品,它实际上是一个与产品服务中的实体不同的实体,尽管它会共享一个标识符。因此,您可以在交易服务中改进产品模型,而不必担心产品服务中的产品模型。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

一个关系可以与另一个关系有关系吗

来自分类Dev

使用多对多关系Laravel / Eloquent / Query builder时如何从另一个表中获取所有书籍

来自分类Dev

将条目及其所有关系转移到另一个Access DB VBA

来自分类Dev

如果属性存在,则 Neo4J 合并节点并创建另一个具有关系的节点

来自分类Dev

Django关系名称冲突-抽象模型与另一个模型具有多个关系

来自分类Dev

如何在Membership Asp.net MVC 4中进行编辑以制作具有关系的另一个表?

来自分类Dev

一个实体与另一个实体具有2个ManyToOne关系

来自分类Dev

如何显示与HTML中的另一个表的外键有关系的html文本框中的表的最后插入的ID(主键)

来自分类Dev

如何查询用户以查找与parse.com上的另一个用户没有关系的用户

来自分类Dev

断言失败的UITableView:删除与另一个对象有关系的对象

来自分类Dev

从另一个没有关系的表中设置属性Entity Framework

来自分类Dev

一个表或具有关系的多个表

来自分类Dev

在SAS中,如何选择ID组中另一个变量之间具有特定关系的所有ID组?

来自分类Dev

微服务是否应该具有仅将操作转发给另一个微服务的操作?

来自分类Dev

Neo4j.rb:在将一个节点替换为另一个节点之前,先转移所有关系

来自分类Dev

Neo4J-将所有关系从一个节点复制到另一个节点(C#包装器)

来自分类Dev

Neo4J-将所有关系从一个节点复制到另一个节点(C#包装器)

来自分类Dev

从一个表中选择与另一个表没有关系的表

来自分类Dev

如何使用多个参数查询与另一个表具有一对多关系的表?

来自分类Dev

具有同一属性的EF与多对多关系在另一个表上

来自分类Dev

对于n:m关系,如何搜索至少在另一个表中定义m的所有n?

来自分类Dev

如何通过删除另一个模型具有ForeignKey关系的结果来过滤Django Queryset?

来自分类Dev

从具有归属关系Ember.js的另一个模型访问模型属性

来自分类Dev

签出到具有不同Composer依赖关系的另一个分支

来自分类Dev

获取具有密码的节点的所有关系

来自分类Dev

使用另一个实体的ID创建实体,但两者之间没有关系

来自分类Dev

使用另一个实体的ID创建实体,但两者之间没有关系

来自分类Dev

如何设置自动完成以显示来自 laravel 中另一个表的数据(单对多关系)

来自分类Dev

如何将关系从一个表转移到另一个表中具有新ID的表

Related 相关文章

  1. 1

    一个关系可以与另一个关系有关系吗

  2. 2

    使用多对多关系Laravel / Eloquent / Query builder时如何从另一个表中获取所有书籍

  3. 3

    将条目及其所有关系转移到另一个Access DB VBA

  4. 4

    如果属性存在,则 Neo4J 合并节点并创建另一个具有关系的节点

  5. 5

    Django关系名称冲突-抽象模型与另一个模型具有多个关系

  6. 6

    如何在Membership Asp.net MVC 4中进行编辑以制作具有关系的另一个表?

  7. 7

    一个实体与另一个实体具有2个ManyToOne关系

  8. 8

    如何显示与HTML中的另一个表的外键有关系的html文本框中的表的最后插入的ID(主键)

  9. 9

    如何查询用户以查找与parse.com上的另一个用户没有关系的用户

  10. 10

    断言失败的UITableView:删除与另一个对象有关系的对象

  11. 11

    从另一个没有关系的表中设置属性Entity Framework

  12. 12

    一个表或具有关系的多个表

  13. 13

    在SAS中,如何选择ID组中另一个变量之间具有特定关系的所有ID组?

  14. 14

    微服务是否应该具有仅将操作转发给另一个微服务的操作?

  15. 15

    Neo4j.rb:在将一个节点替换为另一个节点之前,先转移所有关系

  16. 16

    Neo4J-将所有关系从一个节点复制到另一个节点(C#包装器)

  17. 17

    Neo4J-将所有关系从一个节点复制到另一个节点(C#包装器)

  18. 18

    从一个表中选择与另一个表没有关系的表

  19. 19

    如何使用多个参数查询与另一个表具有一对多关系的表?

  20. 20

    具有同一属性的EF与多对多关系在另一个表上

  21. 21

    对于n:m关系,如何搜索至少在另一个表中定义m的所有n?

  22. 22

    如何通过删除另一个模型具有ForeignKey关系的结果来过滤Django Queryset?

  23. 23

    从具有归属关系Ember.js的另一个模型访问模型属性

  24. 24

    签出到具有不同Composer依赖关系的另一个分支

  25. 25

    获取具有密码的节点的所有关系

  26. 26

    使用另一个实体的ID创建实体,但两者之间没有关系

  27. 27

    使用另一个实体的ID创建实体,但两者之间没有关系

  28. 28

    如何设置自动完成以显示来自 laravel 中另一个表的数据(单对多关系)

  29. 29

    如何将关系从一个表转移到另一个表中具有新ID的表

热门标签

归档