2017-04-14 100 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

此福克斯代碼:

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