【问题标题】:Bind list value in ArangoDB query在 ArangoDB 查询中绑定列表值
【发布时间】:2014-07-10 08:17:36
【问题描述】:

我在尝试在 ArangoDB 查询中绑定列表变量时遇到了一些问题。更具体地说,该列表可能如下所示,并且来自某个 Foxx 控制器端点中的 URL 参数:

.../someAPIEndpoint?list=A,B,C,D

我希望能够做这样的事情:

stmt = db._createStatement({query: "for i in [@list] return i"});
stmt.bind('list', req.params('list').split(','));

由于我不知道我将从 API 调用中收到多少值,因此我无法为每个可能的值创建 n 个绑定。我想要实现的目标是否可能?

提前致谢。

【问题讨论】:

    标签: arangodb


    【解决方案1】:

    您快到了,您可以将数组直接绑定到参数(我刚刚从您的查询中删除了“[”和“]”:

    stmt = db._createStatement({query: "for i in @list return i"});
    stmt.bind('list', req.params('list').split(','));
    

    【讨论】:

    • 嗨@mchacki,感谢您的快速回复。我也尝试过这种方式,但我得到了ERROR A runtime error occurred while executing an action: [ArangoError 1563: list expected] Error: list expected。有什么方法可以检查实际尝试执行的 AQL 查询吗?我检查了stmtobject,但没有插入绑定。
    • 您可以使用stmt.explain() 获取有关您的查询的一些信息。寻找类似的东西:{“id”:1,“loopLevel”:1,“type”:“for”,“resultVariable”:“i”,“expression”:{“type”:“const value”,“value " : "\"A,B,C,D\"" } },在这种情况下,我将字符串而不是数组绑定到 @list
    猜你喜欢
    • 1970-01-01
    • 2019-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 2020-11-03
    相关资源
    最近更新 更多