2014-07-10 2 views
3

ArangoDB 쿼리에서 목록 변수를 바인딩하려고 할 때 몇 가지 문제가 있습니다. 다음과 특정 폭스 컨트롤러 엔드 포인트의 URL 매개 변수에서 온다보다 구체적으로, 목록과 같습니다ArangoDB 쿼리의 바인딩 목록 값

.../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 개의 바인딩을 만들 수 없습니다. 내가 성취하고자하는 것이 가능한가?

미리 감사드립니다.

답변

2

당신은 거의 다, 당신이 직접 (난 그냥 쿼리에서 "["와 "]"를 제거 매개 변수로 배열을 결합 할 수 있었다 :.

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

안녕 @mchacki, 빠른 답장을 보내 주셔서 감사합니다 I 또한 그 방법을 시도했지만'''오류가 발생합니다. 작업을 실행하는 동안 런타임 오류가 발생했습니다 : [ArangoError 1563 : list expected] 오류 : 목록이 예상 됨'''. 어떤 AQL 쿼리가 실제로 시도되는지 확인하는 방법이 있습니까? 'stmt'' 객체를 검사했지만 바인딩이 보간되지 않았습니다 – jarandaf

+0

'stmt.explain()'을 사용하여 쿼리에 대한 정보를 얻을 수 있습니다 : { "id ": 1,""resultVariable ":"i ", "표현식 ": { "유형 ":"const 값 ", "값 ":"\ "A : , B, C, D \ "" } } 이 경우에는 @list에 배열 대신 문자열을 바인딩했습니다. – mchacki