我最近获得了比使用vault.trackby
函数测试我的cordapp时讨价还价更多的结果并且破坏了默认页面规范限制。
因此,为了确认我对页面规范如何与trackby
一起使用初始快照的理解,这里有一个场景和几个问题。
假设我在保险库中有1000个州符合我的查询条件。
因此,我使用页面规范调用vault.trackby
,其中pageNumber为1,页面大小为250
我假设我将使用初始快照获得前250个结果,这是正确的吗?
剩余的750个结果是否会随着更新而回归?或者只会返回新的更新。只有通过使用trackBy
或queryBy
,第2,3,4页等再次查询才能访问其他750个州。
我希望这是有道理的。 感谢
答案 0 :(得分:0)
您问题的具体答案:
1)正确
2)仅新的更新将被流回,并且您将需要发出另一个queryBy
(不要再次使用trackBy
)明确要求第2、3、4页。
但是,注意:后续查询(例如,针对第2、3、4页的查询)可能包含新结果-包括来自初始trackBy
查询的流式更新-因为每个快照查询在特定的时间都是唯一的。
trackBy
的预期使用模式是获取适合单个页面的 bounded 快照(由关联的查询条件定义),从而保证流式更新的原子性(例如。没有重复)。
推荐的使用方式是:
a)首先使用一些有条件的条件(例如,所有早于24小时的条目)发出快照(queryBy
)查询,然后是
b)使用受限条件(例如,过去24小时内的所有条目)进行第二次流式查询(trackBy
)
因此,总而言之,应谨慎使用trackBy
的分页语义,并应了解后续的页面请求可能包含不同的结果(基于自原始trackBy
查询以来发生的任何CRUD操作)