2016-01-29 9 views
9

Non è il momento migliore per chiedere una domanda su Parse.com, ma devo continuare a lavorare con il parse per alcuni mesi. Ecco la mia domanda:In Parse.com JS SDK, come eliminare un elemento dall'interno di un array di puntatori?

In Parse.com sto usando l'SDK Javascript. Ho un serie di puntatori a classe User:

[{userObject1.id}, {userObject2.id}, {userObject3.id}]

come posso eliminare ad esempio oggetto {userObject2} dal all'interno dell'array quando non mi resta che l'id dell'oggetto che voglio rimuovere?

Attualmente sto rimuovendo l'oggetto interno eseguendo un ciclo forEach utilizzando array.splice (indexDelete, 1) ;. Sto cercando una soluzione migliore.

var wasSomethingDeleted = 0; 
var MyParseFollow = Parse.Object.extend('Follow'); 
var query = new Parse.Query(MyParseFollow); 
query.equalTo("user", channelUser); // fetch all followers 
query.first().then(
    function (Follow) { 
     if (Follow){ 
      if (Follow.get("followedBy").length > 0){ // check if there is any follower 
       var listOfFollowers = Follow.get("followedBy"); // get the array of userObjects of followers 
       var indexDelete = 0; 
       listOfFollowers.forEach(function(user){ 
        if(user.id == Parse.User.current().id){ // I want to remove the current authenticated user 
         wasSomethingDeleted++; 
         listOfFollowers.splice(indexDelete, 1); // remove the element 
        }else{ 
         indexDelete++; 
        } 
       }); 
       if(wasSomethingDeleted > 0){ 
        Follow.set('followedBy', listOfFollowers); // save new updated array list of followers 
        Follow.save(); 
       } 
      } 
     } 
    } 
); 
+3

Ho appena ricevuto questa email da Parse.com http://blog.parse.com/announcements/moving-on/ Essi stanno chiudendo la servizio. Potrebbe non rispondere alla tua domanda ma forse significa che non hai più bisogno di una risposta. – bhspencer

+0

Parse è intorno al 2017 e Parse ha aperto il proprio server. Immagino in qualche modo un forte sostegno della comunità del codice open source per alcuni anni a venire. – rambossa

+2

Hanno aperto il loro server, ma l'intero punto di utilizzo di Parse.com era che non era necessario eseguire il proprio server. – bhspencer

risposta

-1

I belive questo dovrebbe funzionare

var User = Parse.Object.extend("User"); 
var user = new User(); 
user.id = "UserID1"; 
user.destroy().then(console.log.bind(console)) 

o

var user = User.createWithoutData("UserID1"); 
user.destroy().then(console.log.bind(console)) 

Dal momento che si dispone di più ID utente si consiglia di utilizzare il metodo Parse.Object.destroyAll

+0

grazie per la tua risposta ma non capisco come mi aiuterà a risolvere il problema. Capisco come distruggere un oggetto Utente, e non lo voglio. Voglio rimuovere l'oggetto dell'utente dall'array, NON voglio distruggerlo. – lito

0

questo dovrebbe fare .. utilizzando 2 query per utente e classe per rimuovere un solo oggetto utente dall'array.

è possibile testare e quindi regolare per aggiungere il tuo 'forEach' nella lista dei follower. È possibile eseguire un ciclo forEach sui follower, recuperare ciascun oggetto utente su una matrice di utenti, quindi chiamare remove sull'intero array e in un passaggio vengono rimossi dall'array MPFollow.followedBy.

 var qu = new Parse.Query(Parse.User); 
     var _user; 
     var folRequest = Parse.Object.extend("MPFollow"); 
     var qcr = new Parse.Query(folRequest); 

     qu.get(userId).then(function(user) { 
      if (typeof user === "undefined") { 
      return Parse.Promise.error("DNF user to remove"); 
      } else{ 
      _user = user; 
      return qcr.get(MPFollowId); 
      } 
     }).then(function(mpf){ 

      _mpf = mpf; 
      _mpf.remove("followedBy", _user); 
      console.log('ChnReq UP rm user : ' + _chan.id + ' ' +  _user.id); 
      return _mpf.save(); 
}).then(function(){ 
      console.log('remov prcss complete'); 

     },function(e) { 
      console.log('ERR ' + e.code + ' ' +e.message); 
     }); 
0

Suggerimento: Penso che si desidera rimuovere utente di accesso corrente dalla lista o se si desidera rimuovere ogni utente da un elenco. allora perché si ottiene dal server e poi rimuoverlo, è possibile utilizzare questo come

query.whereNotEqualTo("objectId", user.id); 

questo vi aiuterà a rimuovere tutti gli utenti che non sono necessari.

0

Come da documentazione di Parse js guide.Try questo

var wasSomethingDeleted = 0; 
var MyParseFollow = Parse.Object.extend('Follow'); 
var query = new Parse.Query(MyParseFollow); 
query.equalTo("user", channelUser); // fetch all followers 
query.first().then(
    function (Follow) { 
     if (Follow){ 
      if (Follow.get("followedBy").length > 0){ // check if there is any follower 
        Follow.remove('followedBy', {Parse.User.current().id}); //remove all instances of the current user from followedBy field. 
        Follow.save(); 
      } 
     } 
    } 
); 
+0

@lito qualche commento? – WitVault

Problemi correlati