2013-04-18 3 views
0

J'ai une API REST côté serveur, qui peut retourner une donnée jsonyfied avec une structure arbitraire. Du côté client, j'ai une application Angular.

ressource est définie:

module.factory('SearchQueries', function ($resource){   
    return $resource('/instances/searches/:_id', {_id: '@_id'}); 
})                

Après essayer d'obtenir des données de mon api:

$scope.search_queries = SearchQueries.query(null, function(args){ 
    console.log('success: ', args);         
    for (i in args) {             
    }                 
}); 

Le côté client reçoit une donnée avec une structure un peu:

{"2": "serfgserg", "3": "sdfgdfg", "4": "sdgdfhdfghfgh", "5": "sdgdfhdfghfgh"}

Mais! Dans la fonction de succès de la ressource angulaire, chaque symbole de la donnée est la valeur d'un objet élément.

[{"0":"s","1":"e","2":"r","3":"f","4":"g", e.t.c

Pourquoi est-il fait? Comment prévenir ou utiliser correctement?

modifier:

Si je retourne un tableau à partir du serveur:

res = json.dumps(["sdf", "asdf", "asdf"])        
return Response(response=res, mimetype='application/json', 
     status=status) 

Peu importe, j'ai le même résultat:

[{"0":"s"},{"0":"d"},{"0":"f"},{"0":"a"},{"0":"s"},{"0":"d"},{"0":"f"} // e.t.c  
+0

Est-ce que votre retour du serveur à propos de JSON valide? Votre serveur retourne-t-il "application/json"? – cgarvis

+0

Oui c'est. La réponse a été modifiée. – I159

Répondre

1

Ce happends beacause query attend un tableau d'objets , pas un objet - voir the ngResource documentation:

'query': {méthode: 'GET', isArray: true}

attend quelque chose comme:

[{"name":"sdf"}, {"name":"asdf"}, {"name":"asd"}] 
+0

Je l'ai essayé ... S'il vous plaît voir les modifications. – I159

+0

J'ai clarifié ma réponse, vous devriez retourner un tableau d'objets – joakimbl

+0

Merci! Pourquoi est-il modifié au lieu de simplement obtenir des données ou l'exclure si le format de données n'est pas valide? C'est étrange pour moi et je veux vraiment savoir pour quoi est-ce fait? – I159

Questions connexes