如何解决Arango查询承诺错误? [重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决Arango查询承诺错误? [重复]相关的知识,希望对你有一定的参考价值。

这个问题与以下内容完全相同:

我一直在尝试使用soap消息从Arangodb获取查询结果到我的前端服务(Angular 4)。我能够获得查询结果,但在console.log中打印出来。但是如何在此功能(服务)下获得它。

这样我就可以加入肥皂信息了:

var soap_msg = '<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:examples:CheckUserNameService">' +
  '<soapenv:Header/>' +
  '<soapenv:Body>' +
  '<urn:CheckUserNameResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">' +
  '<status xsi:type="xsd:string">' + (Service) + '</status>' +
  '</urn:CheckUserNameResponse>' +
  '</soapenv:Body>' +
  '</soapenv:Envelope>';

我发布了这个问题得到了回复说使用await或.this(),然后我更新了我的代码,但仍然是错误。

我试图用这样的字符串输入一个随机变量来检查soap msg。

var payload = [null,"192.168.72.237"];

它工作正常。查询有问题

var Service = db.query(aqlQuery `
             LET startVertex = (FOR doc IN spec
             FILTER doc.serial_no == '"123456abcde"'
             LIMIT 2
             RETURN doc
             )[0]

            FOR v IN 1 ANY startVertex belongs_to
            RETURN v.ip`, {
  bindVar1: 'value',
  bindVar2: 'value',
}).then(function(res) {
  console.log("doc" + res._result);
})

版本是

  • “node”:“8.9.4”
  • “arangojs”:“^ 5.8.0”,
  • “表达”:“^ 4.16.2”,
  • “快速发电机”:“^ 4.15.5”

我没有任何线索从这里开始。

enter image description here

答案

为了让你解决这个问题,有必要调用游标的.all函数,以便它返回值。

This site有一个很好的例子,简单地说:

db.query('FOR doc IN documents RETURN doc')
  .then((cursor) => { return cursor.all() })
  .then((doc) => { console.log(doc) });

然后调用第一步返回的promise以提取记录,从光标返回的是您正在查找的文档。

EG

var Service = db.query(aqlQuery `
             LET startVertex = (FOR doc IN spec
             FILTER doc.serial_no == '"123456abcde"'
             LIMIT 2
             RETURN doc
             )[0]

            FOR v IN 1 ANY startVertex belongs_to
            RETURN v.ip`, {
  bindVar1: 'value',
  bindVar2: 'value',
}).then(function(cursor) { // Add this to return the documents in the promise
     return cursor.all()  
}).then(function(res) {
  console.log("doc" + res._result);
})

以上是关于如何解决Arango查询承诺错误? [重复]的主要内容,如果未能解决你的问题,请参考以下文章

测试时出现“mpromise(猫鼬的默认承诺库)已弃用”错误[重复]

处理类构造函数中的承诺错误[重复]

如何按顺序执行承诺并返回所有结果[重复]

暂停功能,直到承诺解决[重复]

如何解决vue中避免冗余导航到当前位置错误?

如何将我的代码从回调函数更改为承诺 [重复]