【发布时间】:2020-05-03 16:22:42
【问题描述】:
我调用了两个不同的 api(两个不同的在线商店),每个都返回相似的数据。两者都有一些分页信息以及嵌套的项目数组(订单列表)。我需要组合这些对象以按购买日期的顺序显示完整的项目列表。我还需要弄清楚如何维护分页数据,因为列表太大而无法完全拉入,所以我必须从两个调用中获取更多数据以填充后续页面。
我在 rxjs 中使用 angular。对象如下所示:
回应一:
```{
"startIx": 0,
"page": 1,
"orders":[
{"orderNumber":"756984",
"date":"2020-04-02",
"status":"ORDER_PARTIALLY_PROCESSED",
"price":7.84,
"links":[
{"rel":"store.order",
"href":"history.jsf"
}]},
{"orderNumber":"756985",
"date":"2020-04-03",
"status":"ORDER_PARTIALLY_PROCESSED",
"price":8.54,
"links":[
{"rel":"store.order",
"href":"history.jsf"
}]}],
"totalOrders":2
}```
回应二:
```{
"startIx": 0,
"page": 1,
"orders":[
{"orderNumber":"756984",
"date":"2020-04-02",
"status":"ORDER_PARTIALLY_PROCESSED",
"price":7.84,
"links":[
{"rel":"store.order",
"href":"history.jsf"
}]},
{"orderNumber":"756985",
"date":"2020-04-03",
"status":"ORDER_PARTIALLY_PROCESSED",
"price":8.54,
"links":[
{"rel":"store.order",
"href":"history.jsf"
}]}],
"totalOrders":2
}```
期望的结果是这样的,将来自响应 2 的所有订单添加到其中并更新总数..
```{
"startIx": 0,
"page": 1,
"orders":[
{"orderNumber":"756984",
"date":"2020-04-02",
"status":"ORDER_PARTIALLY_PROCESSED",
"price":7.84,
"links":[
{"rel":"store.order",
"href":"history.jsf"
}]},
{"orderNumber":"756985",
"date":"2020-04-03",
"status":"ORDER_PARTIALLY_PROCESSED",
"price":8.54,
"links":[
{"rel":"store.order",
"href":"history.jsf"
}]},
{"orderNumber":"756984",
"date":"2020-04-02",
"status":"ORDER_PARTIALLY_PROCESSED",
"price":7.84,
"links":[
{"rel":"store.order",
"href":"history.jsf"
}]},
{"orderNumber":"756985",
"date":"2020-04-03",
"status":"ORDER_PARTIALLY_PROCESSED",
"price":8.54,
"links":[
{"rel":"store.order",
"href":"history.jsf"
}]}],
"totalOrders":4
}```
我对 Angular 非常陌生,尤其是 rxjs 和 ngrx,所以我正在寻找一些关于组合列表的最佳方法的建议。
【问题讨论】:
-
欢迎来到 StackOverflow!您所说的“合并列表”并不是特别清楚。您能否提供 2 个列表和预期输出的示例。也不清楚你为什么提到 ngrx - 这似乎与这里无关?
-
欢迎@jenny,从您的问题中无法清楚地理解。但是我给出的一些答案可能会对您有所帮助。
-
看看这个 (stackoverflow.com/a/59668717/10959940)!它有一个例子可以实现你想要做的事情
-
非常感谢您花时间看我的问题。 @KurtHamilton,我已经更新了我的问题,以便更清楚地了解我正在寻找的结果,您可能是正确的,在这种情况下,ngrx 并不重要。
-
@user2089677 非常感谢您花时间回答我的问题。我现在试一试,我会告诉你进展如何。