对象数组数据类型

问题描述:

此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中,当我做小提琴,但不是在福克斯。

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

console.log(test[0].key) 

为什么这回 '未定义' 在福克斯,但正确的数据在一个小提琴?

此福克斯代码:

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日志:

当你刚开通过查询获取数据,在读取结果内容之前,您需要确保查询已完成。

看看这段代码:

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的内容就像您期望的那样。

+0

强制查询返回带有'toArray()'作品的数组。 – Thijs