Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MarkLogic-Node.js客户端API-QueryBuilder-需要数据页和查询的完整计数_Javascript_Node.js_Marklogic - Fatal编程技术网

Javascript MarkLogic-Node.js客户端API-QueryBuilder-需要数据页和查询的完整计数

Javascript MarkLogic-Node.js客户端API-QueryBuilder-需要数据页和查询的完整计数,javascript,node.js,marklogic,Javascript,Node.js,Marklogic,如果node.js客户端API中有以下queryBuilder查询: db.client.documents.query( q.where( q.collection('records'), q.or( q.value('id', [1,2,3,4]) ) ).slice(0, 50) ) 这将为我提供与此查询相关的前50条记录。即使有1000条记录与此查询相关,它也会给我一个50的计数 如果我使用以下命令执行查询: .withOptions({

如果node.js客户端API中有以下queryBuilder查询:

db.client.documents.query(
  q.where(
    q.collection('records'),
    q.or(
        q.value('id', [1,2,3,4])
    )
  ).slice(0, 50)
)
这将为我提供与此查询相关的前50条记录。即使有1000条记录与此查询相关,它也会给我一个50的计数

如果我使用以下命令执行查询:

.withOptions({categories: 'none'})
我可以看到查询的实际计数


是否有一个内置选项可以为我提供一页数据并获取查询的完整计数?

为了支持分页,您必须首先调用.withOptions({categories:'none')来获取记录的总数,然后调用.withOptions({categories:'content')来获取实际内容。以下是关于分页的非常好的文章:


据我所知,没有内置的方法可以同时获取总计数和数据。

这将满足您的要求:

db.documents.query(
  qb.where(
    qb.term('apple')
  )
    .slice(1, 10)
    .withOptions({categories: 'content', metrics: true})
).result()
.then(function(docs) {
  console.log('I have ' + docs.length + ' docs');
})
.catch(function(error) {
  console.log('something went wrong');
});
then
函数中,文档将是长度为11的数组。数组中的第一项是度量:

{
  "metrics": {
    "query-resolution-time": "PT0.00179S",
    "snippet-resolution-time": "PT0.00505S",
    "total-time": "PT0.008708S"
  },
  "page-length": 10,
  "results": [],
  "snippet-format": "snippet",
  "start": 1,
  "total": 20
}

结果数组将包含代码段。数组的第1项到第10项将包含文档的全部内容

我做那件事有点问题。我试着做一个query.result(函数(内容)和stats.result(函数(统计)的查询,它不喜欢我有两个结果承诺的事实。尽管它们是两个不同的查询。伙计,你太棒了,我把它改成了公认的答案,因为这才是我最初想要的。谢谢。