此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中返回正确的数据?
答案 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
的内容就像您期望的一样。