如何解决 Arango 查询承诺错误?

How to solve Arango query promise error?

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

这样我就可以输入肥皂消息了:

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(),然后我更新了我的代码,但错误仍然存​​在。

我试过用这样的字符串输入随机变量来检查肥皂味精。,

var payload = [null,"192.168.72.237"];

有效fine.There是查询问题

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);
})

版本是

我不知道从这里开始。

要为您解决承诺,有必要调用游标的 .all 函数,以便它将 return 值。

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

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

然后调用第一步的promise return提取记录,光标处的return就是你要找的文档

例如

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);
})