OccAdapter和服务之间的用法区别是什么?

问题描述

我对斯巴达克斯有疑问。我使用20.05版本。

this.occCartAdapter.load('xxxxx@gmail.com','00001002').subscribe(data => {
  console.log(data);
});

this.cartService.getActive().subscribe(data => {
  console.log(data);
});

这两个函数最后得到相同的结果。它们有什么区别?当我尝试从后端调试这些功能时,我只能捕获(调试)occCartAdapter。为什么cartService不触发后端?

解决方法

Spartacus中有几层负责加载,存储和公开后端数据。这适用于健康的分层体系结构以及细粒度的可扩展性。您可以在https://sap.github.io/spartacus-docs/connecting-to-other-systems/上了解有关这些图层的更多信息。

通常来说,cartService代表购物车域的外观层,其中occCartAdapter代表购物车域的默认OCC适配器。如果您想适应另一个系统,则可以覆盖/自定义适配器,而不必担心存储,暴露等。

数据将流经所有这些层。所有域(产品,购物车,用户)都使用以下层:

-> component
    -> (component service)
        -> service (AKA facade) 
            -> ngrx-action 
                -> ngrx-effect
                    -> connector 
                        -> adapter
                            -> angular 
                                -> http client (angular)
                                    -> API (OCC)

不建议直接与较低级别的服务直接交互,因为中央存储区不会知道数据。您将不再具有集中存储数据的优势。

这就是说,对于新功能,您绝对不需要复制这些层。这些层已部分放置以实现细粒度的可扩展性,而您的定制则不需要此层。我建议的最低层是一项(单项)服务,其中应包含您组件的数据。