0

此 AQL 返回一个我想使用的对象。

const keys = db._query(aql`
    FOR huis IN test
    FILTER huis._key in ${req.queryParams.keys}
    RETURN {
        'key': huis._key,
        'adres': huis.adres,
        'postcode': huis.postcode,
        'plaats': huis.plaats
    }
`);

这将返回此对象:

[
  {
    "key": "374875",
    "adres": "Klaverstraat 7",
    "postcode": "2197GV",
    "plaats": "Leiden"
  }
]

然后我想像这样拿钥匙:

keys[0].key

当我制作小提琴时,这在 JavaScript 中有效,但在 Foxx 中无效。

const test = [
  {
    "key": "374875",
    "adres": "Klaverstraat 7",
    "postcode": "2197GV",
    "plaats": "Leiden"
  }
]

console.log(test[0].key)

374875

为什么这会在 Foxx 中返回“未定义”但在 Fiddle 中返回正确的数据?

4

1 回答 1

0

这个 Foxx 代码:

router.get('/', function (req, res) {
  const test = [
    {
      "key": "374875",
      "adres": "Klaverstraat 7",
      "postcode": "2197GV",
      "plaats": "Leiden"
    }
  ];

  console.log(test[0].key);
  res.status(200).send(test[0]);
}, 'test1')
  .summary('test1')
  .description('test1');

通过 REST 返回:

{
  "key": "374875",
  "adres": "Klaverstraat 7",
  "postcode": "2197GV",
  "plaats": "Leiden"
}

登录 ArangoDB 日志:

374875

当您通过查询获取数据时,您需要确保查询已完成,然后才能读取结果的内容。

看看这段代码:

router.get('/', function (req, res) {
  const keys = db._query(aql`
    FOR huis IN test
    FILTER huis._key == "374875"
    RETURN {
        'key': huis._key,
        'adres': huis.adres,
        'postcode': huis.postcode,
        'plaats': huis.plaats
    }
`).toArray();

  console.log(keys[0].key);

  res.status(200).send(keys);

}, 'test1')
  .summary('test1')
  .description('test1');

此处FILTER条件已更改,并.toArray()在查询执行后添加。这可以确保查询是完整的,然后keys是您所期望的内容。

于 2017-04-14T13:47:39.900 回答