获取修订的总结果RavenDB Client API

问题描述

我正在尝试在分页列表中显示文档修订。仅当我知道总结果数时,此方法才起作用,这样我就可以计算页面数。

对于常见文档查询,可以使用session.Query(...).Statistics(out var stats)

我当前的解决方法如下:

// get paged revisions
List<T> items = await session.Advanced.Revisions.GetForAsync<T>(id,(pageNumber - 1) * pageSize,pageSize);
double totalResults = items.Count;

// get total results in case items count equals page size
if (pageSize <= items.Count || pageNumber > 1)
{
  GetRevisionsCommand command = new GetRevisionsCommand(id,1,true);
  session.Advanced.RequestExecutor.Execute(command,session.Advanced.Context);
  command.Result.Results.Parent.TryGet("TotalResults",out totalResults);
}

此方法的问题是,我需要一个额外的请求才能获取TotalResults属性,该属性确实已经由第一个请求返回。我只是不知道如何访问它。

解决方法

您是正确的TotalResults是从服务器返回的,但未在客户端解析。 我打开一个问题来解决此问题:https://issues.hibernatingrhinos.com/issue/RavenDB-15552

您还可以使用/databases/{dbName}/revisions/count?id={docId}端点(例如客户端代码)来获取文档的总修订计数:

                var docId = "company/1";
                var dbName = store.Database;
                var json = await store.GetRequestExecutor().HttpClient
                    .GetAsync(store.Urls.First() + $"/databases/{dbName}/revisions/count?id={docId}").Result.Content.ReadAsStringAsync();
                using var ctx = JsonOperationContext.ShortTermSingleUse();
                using var obj = ctx.ReadForMemory(json,"revision-count");
                obj.TryGet("RevisionsCount",out long revisionsCount);

另一种方式可能是获取所有修订版本:

var revisions = await session.Advanced.Revisions.GetForAsync<Company>(docId,int.MaxValue);

然后使用revisions.Count作为总数。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...