【问题标题】:Execute AQL in AngularJS using $http使用 $http 在 AngularJS 中执行 AQL
【发布时间】:2016-06-23 06:25:56
【问题描述】:

我正在使用 ArangoDB 中的 FOXX 作为后端,并且我已经在使用由 AngularJS 制作的页面。我正在使用$http 进行请求,效果很好,但现在我需要进行复杂的查询。

我想知道是否可以使用 $http 从 AngularJS 页面中使用 Arango 查询语言执行查询。

【问题讨论】:

    标签: javascript angularjs arangodb


    【解决方案1】:

    由于$http 只是一个用于发出 AJAX 请求的 API,您只需使用 HTTP AQL API:https://docs.arangodb.com/3.0/HTTP/AqlQueryCursor/QueryResults.html

    $http.post('http://localhost:8529/_api/cursor', {
      query: `
        FOR doc IN collection
        FILTER doc.color = @color
        RETURN doc
      `,
      bindVars: {color: 'blue'}
    })
    .then(successCallback);
    

    如果您想要更好的东西,您可以使用来自arangojs 模块(提供 ArangoDB JS 驱动程序)的aql 模板字符串处理程序:

    var aql = arangojs.aql;
    var color = 'blue';
    $http.post('http://localhost:8529/_api/cursor', aql`
      FOR doc IN collection
      FILTER doc.color = ${color}
      RETURN doc
    `)
    .then(successCallback);
    

    您也可以直接使用 arangojs 库,但请记住,$http 还具有使 AngularJS 注意到异步状态更改所需的魔力。如果你想直接使用 arangojs,你必须确保手动调用 $scope.$apply()

    【讨论】:

    • 谢谢。它可以工作,但我想知道我是否可以选择集合的数据库,因为 url localhost:8529/_api/cursor 是默认数据库 _system
    • 尝试改用/_db/yourdb/_api/cursor
    • @HerberColop 我的建议有效吗?您有什么要我添加到我的答案中的吗?
    • @HerberColop 如果建议有效并且没有要添加的内容,您能否将答案标记为已接受?
    猜你喜欢
    • 2016-02-27
    • 2017-04-22
    • 2013-08-31
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    相关资源
    最近更新 更多