2017-04-14 7 views
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で動作します。

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

console.log(test[0].key) 

なぜフィドルでフォックスが、正しいデータの '未定義' は、このリターン?

答えて

0

このフォックスコード:REST経由

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'); 

戻り値:ArangoDBログへ

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

ログ:

あなたはのgettinされていますクエリを介してデータを取得する場合は、結果の内容を読み取る前にクエリが完了していることを確認する必要があります。このコードでは

ルック:

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

関連する問題