假设我有一个产品实体列表。然后,我想编辑其中一种产品,因此我将调用getEntityByKey从缓存中获取它。

但是,在编辑屏幕上,可能要显示比网格中更多的属性,而就我而言,我实际上需要对某些产品属性执行expand()。

那么我该如何处理缓存呢?如果我使用getEntityByKey,则不会执行expand()。我可以执行查询,但是这样我就不会利用缓存的实体(如果之前已经编辑过Product的话)。

在这种情况下,我应该选择什么策略?

最佳答案

另一种方法:将isReadyForEdit标志添加到您的Product实体。如果为false,则使用常规查询来获取完整的Product WITH EXPAND以获取相关实体。如果是真的,您就知道缓存中有所需的所有内容,而getEntityByKey也就足够了(因为相关实体也将位于缓存中)。确保在两种情况下都返回一个promise,以便您的调用者逻辑准备等待。这与John Papa的示例中的isPartial相同。

更新12月17日

忘了提一下,与John Papa的示例不同,您的isReadyForEdit不应为未映射的属性,除非您需要序列化其状态(即使那样我也不确定)。只需在属性为true时将其添加到实体即可。

并不是说太平绅士的所作所为是错误的;适合他的离线场景。但是,如果您不需要微风感知功能,则未映射的属性会增加不必要的复杂性

10-07 16:07