在foxx服务中,通常使用
res.send("Whatever");但是在我要发回的数据量很大的情况下,我想模仿游标的行为(在几个更小的块中发送),我该怎么做呢?
发布于 2018-02-22 21:57:31
您将希望使用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 end,您将需要接受并使用参数来控制分页。使用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);
})**可以传入跳过/跳过值,也可以根据页码进行计算。
*编辑Foxx端点本质上是javascript应用程序。您可以使用上面的分页方法轻松地使用游标,或者将游标端点用作documented。您需要将游标ID和hasMore属性传递给客户端,以便客户端可以请求下一批处理。'batchSize‘属性设置通过游标返回的结果数。
https://stackoverflow.com/questions/48624946
复制相似问题