2015-07-01 64 views
0

我正嘗試訪問一個JSON元素,我在從查詢到Parse.com類反應時得到有問題。如何訪問從Parse.com查詢返回的JSON元素?

我已閱讀關於類似主題的問題並且仍無法解決。

這是我的查詢:

Parse.Cloud.define("todoenuno", function(request, response) { 

    var User = Parse.Object.extend("_User"); 
    var query = new Parse.Query(User); 
    query.equalTo("TipoUsuario", {"__type": "Pointer", "className": "Tipo_de_Usuario", "objectId": "UgTuNHEQEZ"}); 
    query.find({ 
     success: function(results) { 
      response.success(results[0]); 
     }, 
     error: function(error) { 
      alert("Error: " + error.code + " " + error.message); 
      response.error('Request failed with response code ' + error.status); 
     } 
    }); 
}); 

所以,當我調用函數todoenuno()我得到這樣的:

{ 
    "result": { 
    "Apellido": "Galli", 
    "Nombre": "Gabriel", 
    "NombreSede_FK": { 
     "__type": "Pointer", 
     "className": "Sedes", 
     "objectId": "JNMeQHySaD" 
    }, 
    "Sexo": "M", 
    "TipoUsuario": { 
     "__type": "Pointer", 
     "className": "Tipo_de_Usuario", 
     "objectId": "UgTuNHEQEZ" 
    }, 
    "TipoUsuario_FK": { 
     "__type": "Pointer", 
     "className": "Tipo_de_Usuario", 
     "objectId": "Aprendiz" 
    }, 
    "Turno_FK": { 
     "__type": "Pointer", 
     "className": "Turnos", 
     "objectId": "3lgY2zVyLD" 
    }, 
    "__type": "Object", 
    "className": "_User", 
    "createdAt": "2015-05-23T15:07:17.202Z", 
    "email": "[email protected]", 
    "objectId": "PqhqC7HqIj", 
    "updatedAt": "2015-05-30T14:48:28.287Z", 
    "username": "GabrielGalli" 
    } 
} 

從查詢的結果是確定的,但我需要訪問單個元素。

例如,我想獲得「Galli」的值。

我試着使用了諸如:

response.success(results[0].Apellido); //or response.success(results[0]["Apellido"]; 

而且我得到了一個空的JSON。

如果我嘗試:

response.success(results.result.Apellido); 

我得到「不容讀‘Apellido’從不確定......」

I'm編程新,所以請原諒我,如果這是一個非常愚蠢的問題,但我花了很多時間尋找類似主題的答案之後找不到解決方案。

在此先感謝和抱歉我的英語!

+0

我對parse.com並不熟悉,但是'results.result.Apellido'對我來說看起來是正確的,根據你所說的。所以也許你所說的不完全正確;你確定你確實有一個JavaScript對象,或者是'results'實際上是需要解析的一串JSON嗎? –

+0

我說的是我用POSTMAN調用函數後得到的結果我認爲訣竅是在response.success中返回的array/object /「thing」類型。我嘗試JSON.parse(結果);但仍然無法訪問。 @AnthonyGrist – Vorenus

回答

0

如果JSON是結果[0],那麼你會用它來獲取 「嘉麗」:

results[0].result.Apellido 

編輯:外貌就像在documentation中一樣,results [0]是一個Parse.Object,因此您可以使用get()方法:

results[0].get('Apellido') 
+0

這樣做我得到{「code」:141,「error」:「TypeError:無法讀取屬性'Apellido'未定義\ n @ben – Vorenus

+0

也許結果[0] .get('Apellido')// https:// www.parse.com/docs/js/guide#queries –

+0

YES!謝謝你,你搖滾!那麼像「NombreSede_FK」裏面的「objectId」這樣的嵌套元素呢?@Ben – Vorenus

0

使用此功能可以得到期望的結果:

function getAttributeByIndex(obj, index){ 
    var i = 0; 
    for (var attr in obj){ 
    if (index === i){ 
     return obj[attr]; 
    } 
    i++; 
    } 
    return null; 
} 
    console.log(getAttributeByIndex(response, 0)); 
+0

getAttributeByIndex函數來自哪裏?另外,由於他們沒有使用數組,所以你爲什麼期望這個工作? –

+0

這不工作@Mathivanan。 – Vorenus