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

时间:2018-02-05 14:38:10

标签: arangodb foxx

在foxx服务中,通常使用

发回响应
Embedded stack arn:aws:cloudformation:us-west-****** was not successfully created:
The following resource(s) failed to create: 
[NAT1EIP, NAT2EIP, PublicSubnet1RouteTableAssociation, PrivateSubnet2ARouteTableAssociation, PublicSubnetRoute, PrivateSubnet1ARouteTableAssociation, PublicSubnet2RouteTableAssociation].

但是在我的数据发送回来的情况下是巨大的,我想模仿光标的行为(发送几个较小的块),我该怎么办呢?

1 个答案:

答案 0 :(得分:1)

您需要使用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。您需要将游标IDhasMore属性传递给客户端,以便它可以请求下一批。 'batchSize'属性设置通过游标返回的结果数。