阿兰戈德布。在 Foxx 服务中使用游标发回数据
Arangodb. Using cursor to send back data in Foxx service
在 foxx 服务中,通常使用
发回响应
res.send("Whatever");
但是我要发回的数据很大,所以我想模仿游标的行为(发送几个较小的块),我该怎么做?
您将要使用 Query Cursors。
如果你使用的是Arangojs,那么here is that documentation。
查询全部数据:
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 端的东西,您将需要接受和使用参数来控制分页。使用 LIMIT 功能:
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);
})
** 传入 skip/take 值或根据页码计算它们。
*编辑
Foxx 端点本质上是 javascript 应用程序。您可以使用上面的分页方法轻松使用游标或游标端点为 documented。您需要将游标 ID
和 hasMore
属性传递给客户端,以便它可以请求下一批。 'batchSize' 属性 设置通过游标返回的结果数。
在 foxx 服务中,通常使用
发回响应res.send("Whatever");
但是我要发回的数据很大,所以我想模仿游标的行为(发送几个较小的块),我该怎么做?
您将要使用 Query Cursors。
如果你使用的是Arangojs,那么here is that documentation。
查询全部数据:
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 端的东西,您将需要接受和使用参数来控制分页。使用 LIMIT 功能:
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);
})
** 传入 skip/take 值或根据页码计算它们。
*编辑
Foxx 端点本质上是 javascript 应用程序。您可以使用上面的分页方法轻松使用游标或游标端点为 documented。您需要将游标 ID
和 hasMore
属性传递给客户端,以便它可以请求下一批。 'batchSize' 属性 设置通过游标返回的结果数。