2015-11-16 12 views
13

Sto usando Parse.com come backend e dopo Query come posso riempire un array con tutti i dati all'interno dell'oggetto Parse? come posso evitare di ri-mappare? Esempio:Come caricare in un array tutti gli oggetti dopo Query Parse.com

$scope.addContList = contacts.map(function(obj) { // re-map!!!! 
    return {name: obj.get("name")}; // mapping object using obj.get() 
}); 

sto mappatura proprietà di mio oggetto Parse uno per uno: Nome: obj.get ("nome"), ecc c'è un modo migliore?

$scope.addContList = []; 
    var ActivityContact = Parse.Object.extend("ActivityContact2"); 
    var query = new Parse.Query(ActivityContact); 
    query.equalTo("activityId", $scope.objId); 
    query.find({ 
     success: function(contacts) { 
      console.log("Successfully retrieved " + contacts.length + " contact."); 
       $scope.$apply(function() { 
        /*$scope.addContList = contacts.map(function(obj) { 
         return {name: obj.get("name")}; // mapping object using obj.get() 
        });*/ 
        for (var i = 0; i < contacts.length; i++) { 
          $scope.addContList.push(contacts.ALL_PROPERTIES); // contacts.ALL_PROPERTIES does not exist, I'm looking a way to do that and avoid mapping? 
        } 
       }); 
      console.log("--->>>"+JSON.stringify($scope.addContList, null, 4)); 

     }, 
     error: function(object, error) { 
      // The object was not retrieved successfully. 
      // error is a Parse.Error with an error code and message. 
     } 
    }); 
  1. Dovrei usare libreria di sottolineatura, è che l'unico modo per andare?
  2. Ho visto alcuni ppl utilizzando PFQuery ma non so cos'è, PFQuery è meglio per questo?

Grazie!

risposta

3

Le altre risposte sono corrette, ma penso che sia necessario lanciare un ciclo di digest ogni volta che si aggiunge un elemento da contacts a $scope.addContList. Qualcosa del genere dovrebbe essere sufficiente:

query.find({ 
    success: function (contacts) { 
    $scope.apply(function() { 
     // 1) shallow-copy the list of contacts... 
     // (this is essentially what you are trying to do now) 
     $scope.addContList = contacts.slice(); 

     // or 2) just assign the reference directly 
     $scope.addContList = contacts; 

     // or 3) transform the Parse.Object instances into 
     // plain JavaScript objects 
     $scope.addContList = contacts.map(function (c) { 
      return c.toJSON(); 
     }); 
    }); 
    }, 
    error: function (object, error) { 
    // The object was not retrieved successfully. 
    // error is a Parse.Error with an error code and message. 
    } 
}); 

Opzioni 1) e 2) corrisponderà a un modello simile a

<div ng-repeat="cont in addContList">{{ cont.get('name') }}</div> 

mentre l'opzione 3) può essere utilizzato come

<div ng-repeat="cont in addContList">{{ cont.name }}</div> 
+0

Grazie per la tua risposta! Sto usando $ scope.addContList in una ng-repeat quindi ho bisogno di una matrice di oggetti simile a questo: [{nome: "nome1"}, {nome: "nome2"}, {nome: "nome3 "}]. Se utilizzo la soluzione, avrò ParseObject che non posso usare (o almeno non è così facile). Se osservate i commenti del codice che ho: $ scope.addContList = contacts.map (function (obj) {return {name: obj.get ("name")};}); Sto rimappando l'oggetto per lo stesso motivo. – lito

+0

Capisco. Quindi cosa c'era di sbagliato nella tua soluzione 'contacts.map (...)'? –

+0

Penso che sia prolisso e sto cercando un'opzione migliore. Grazie! – lito

2

Se si cambia

$scope.addContList = contacts[i]; 

a:

$scope.addContList.push(contacts[i]); 

si dovrebbe essere pronti per partire. Il codice precedente stava riassegnando addContList a ciascun elemento nell'array contacts, anziché aggiungervi l'elemento. Quindi alla fine del tuo ciclo for, $scope.addContList sarebbe solo l'ultimo contatto nell'array contacts.

+0

Grazie per la tua risposta! Sto usando $ scope.addContList in una ng-repeat quindi ho bisogno di una matrice di oggetti simile a questo: [{nome: "nome1"}, {nome: "nome2"}, {nome: "nome3 "}]. Se utilizzo la soluzione, avrò ParseObject che non posso usare (o almeno non è così facile). Se osservate i commenti del codice che ho: $ scope.addContList = contacts.map (function (obj) {return {name: obj.get ("name")};}); Sto rimappando l'oggetto per lo stesso motivo. – lito

+0

Puoi fornire un campione su plunker o jsfiddle? –

2

Cambio:

$scope.addContList = contacts[i]; 

a

$scope.addContList.push(contacts[i]); 
+0

Grazie per la tua risposta! Sto usando $ scope.addContList in una ng-repeat quindi ho bisogno di una matrice di oggetti simile a questo: [{nome: "nome1"}, {nome: "nome2"}, {nome: "nome3 "}]. Se utilizzo la soluzione, avrò ParseObject che non posso usare (o almeno non è così facile). Se osservate i commenti del codice che ho: $ scope.addContList = contacts.map (function (obj) {return {name: obj.get ("name")};}); Sto rimappando l'oggetto per lo stesso motivo. – lito

Problemi correlati