Arangodb。在Foxx服务中使用游标发回数据

Arangodb。在Foxx服务中使用游标发回数据,arangodb,foxx,Arangodb,Foxx,在foxx服务中,通常使用 res.send("Whatever"); 但是如果我要发回的数据很大,那么我想模仿游标的行为(发送几个较小的块),我怎么做呢?您会想使用 如果您使用的是Arangojs,那么 查询所有数据: const cursor = await db._query('FOR x IN 1..5 RETURN x'); const result = await cursor.all() // result is an array containing the entire qu

在foxx服务中,通常使用

res.send("Whatever");
但是如果我要发回的数据很大,那么我想模仿游标的行为(发送几个较小的块),我怎么做呢?

您会想使用

如果您使用的是Arangojs,那么

查询所有数据:

const cursor = await db._query('FOR x IN 1..5 RETURN x');
const result = await cursor.all()
// result is an array containing the entire query result
assert.deepEqual(result, [1, 2, 3, 4, 5]);
assert.equal(cursor.hasNext(), false);
或者一个接一个:

// query result list: [1, 2, 3, 4, 5]
const val = await cursor.next();
assert.equal(val, 1);
// remaining result list: [2, 3, 4, 5]

const val2 = await cursor.next();
assert.equal(val2, 2);
// remaining result list: [3, 4, 5]
对于Foxx终端,您需要接受并使用参数来控制分页。使用以下功能:

router.get('/entries/:skip/:take', function (req, res) {
  const keys = db._query(aql`
    FOR entry IN ${foxxColl}
    LIMIT @skip, @take // ** 
    RETURN entry._key
  `, {'skip': skip, 'take': take});
  res.send(keys);
})
**传入跳过/接受值或根据页码计算它们

*编辑
Foxx端点本质上是javascript应用程序。您可以使用上面的分页方法或游标端点轻松地使用游标。您需要将光标
ID
hasMore
属性传递给客户端,以便客户端可以请求下一批。“batchSize”属性设置通过游标返回的结果数量。

因此,这意味着在复杂遍历的情况下,我必须使用Foxx,但游标还不支持?无论如何,谢谢你,我将等待一段时间确认这一点,然后再将其设置为已接受answer@LoredraL是的,您可以通过
/\u api/cursor
端点使用游标。对答案作了一些澄清。这有用吗?