对象数组数据类型

时间:2017-04-14 13:36:51

标签: arangodb foxx

此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中返回'undefined'但在Fiddle中返回正确的数据?

1 个答案:

答案 0 :(得分: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的内容就像您期望的一样。