2013-10-17 27 views
1

嘗試編寫腳本以在常規中打開事務。目前有:打開REST密碼事務

def static transaction(statement, params,success, error) 
{ 
    def http = new HTTPBuilder('http://localhost:7474') 
    http.request(POST, JSON) { 
     uri.path = '/db/data/transaction' 
     headers.'X-Stream' = 'true' 
     requestContentType = JSON 
     body = [ statements : statement , params : params ?: [:] ] 

     // uri.query = [ param : 'value' ] 

     response.success = { resp, json -> 
      if (success) success(json) 
      else { 
       println "Status ${resp.statusLine} Columns ${json.columns}\nData: ${json.data}" 
      } 
     } 

     response.failure = { resp, message -> 
      def result=[status:resp.statusLine.statusCode,statusText:resp.statusLine.reasonPhrase] 
      result.headers = resp.headers.collect { h -> [ (h.name) : h.value ] } 
      result.message = message 
      if (error) { 
       error(result) 
      } else { 
       println "Status: ${result.status} : ${result.statusText} " 
       println 'Headers: ${result.headers}' 
       println 'Message: ${result.message}' 
      } 
     } 
    } 
} 
transaction("start n=node(*) return n",[id:56981],{ println "Success: ${it}" },{ println "Error: ${it}" }) 

但是我收到以下錯誤的響應:

Success: [commit:http://localhost:7474/db/data/transaction/4/commit, results:[], errors:[[code:40001, status:INVALID_REQUEST_FORMAT, message:Unable to deserialize request. Expected [START_OBJECT, FIELD_NAME, START_ARRAY], found [START_OBJECT, FIELD_NAME, VALUE_STRING].]]] 

的思考?謝謝!

+0

是否使用的是里程碑? – Nicholas

+0

當前正在使用2.0.0-M5 – Badmiral

+0

對於調試,可能需要在應用程序和Neo4j之間放置代理,例如, http://www.charlesproxy.com/是有用的。通過這種方式,您可以準確檢查電線上發生了什麼。 –

回答

0

面對PHP同樣的問題,statements必須包含的statement陣列:

[ 
    statements => [ 
     statemant 
    ], 
    resultDataContents => [ 
     'row', 
     'graph', 
    ], 
    'includeStats' => true, 
]