Тип данных Object Array
Этот 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, но правильные данные в скрипте?
1 ответ
Решение
Этот код 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
как и следовало ожидать.