2016-02-12 20 views
5

Ho migrato la mia app Parse a Heroku come da guida alla migrazione sul blog Parse. Le cose sembrano funzionare bene ad eccezione di eseguire una query nel mio codice cloud. Qui è il mio codice:Query di query nel codice cloud non funzionante dopo la migrazione a Heroku

Parse.Cloud.afterSave("Item", function(request) { 
    //Parse.Cloud.useMasterKey(); //Uncomenting this line yields the same error 

    var query = new Parse.Query(Parse.User); 
    var prevAssigneeId = request.object.get("prevAssignee").id; 
    var assigneeId = request.object.get("assignee").id; 

    query.get(prevAssigneeId, { // <-- Results in an error 
     success: function(prevAssignee) { 
      console.log("Fetch prevAssignee: Success"); 
      query.get(assigneeId, { 
       success: function(assignee) { 
        console.log("Fetch assignee: Success"); 

        // Do something with the fetched users! 
       }, 
       error: function(object, error) { 
        console.log("Query for assignee: "); 
        console.log(error); 
       } 
      }); 
     }, 
     error: function(object, error) { 
      console.log("Query for prevAssignee: "); 
      console.log(error); //<-- Error is logged here 
     } 
    }); 
}); 

Errore codice

ParseError { code: undefined, message: 'unauthorized' }

Questa nube utilizzato per eseguire bene quando ospitato su Parse. Ma dopo la migrazione sto ricevendo l'errore sopra riportato. Gli altri codici cloud che non usano ParseQuery funzionano ancora bene.

Qualche idea su quale potrebbe essere il problema?

UPDATE

ancora in grado di trovare una soluzione per questo quindi ho provato a cambiare il codice di seguito:

Parse.Cloud.afterSave("Item", function(request) { 

    console.log("Executing afterSave"); 

    function findUser(user_id) { 
     var query = new Parse.Query(Parse.User); 
     //Parse.Cloud.userMasterKey(); 
     return query.get(user_id); 
    } 

    var prevAssigneePromise = findUser(request.object.get("prevAssignee").id); 
    var assigneePromise = findUser(request.object.get("assignee").id); 

    var promises = [prevAssigneePromise, assigneePromise]; 

    Parse.Promise.when(promises).then(function(prevAssignee, assignee) { 

     //Do something here! 
     console.log("This line was executed!"); 

    }, 
    function(error) { 
     console.log(error); 
    }); 
}); 

Ora ho notato il seguente comportamento:

  • Esegui come è, produce lo stesso errore: [ ParseError { code: undefined, message: 'unauthorized' }, ParseError { code: undefined, message: 'unauthorized' } ]
  • Se non unco mment Parse.Cloud.userMasterKey();, non ci sono errori, ma non eseguirai nulla nel blocco di successo o "log" Questa riga è stata eseguita! ". Posso confermare che il logging stesso funziona perché funzionano altre istruzioni console.log(...).

Cordiali saluti: Item è una classe di analisi con colonne assignee e prevAssignee che sono le colonne che sono puntatori a _User s.

Qualsiasi aiuto è molto apprezzato.

+0

è necessario utilizzare query.get (prevAssigneeId, { useMasterKey: vero, successo: la funzione (prevAssignee) { – jiawen

+0

@jiawen questo non ha funzionato, ho provato un approccio diverso, che anche didn' t lavoro (vedi il mio codice aggiornato). Qualsiasi idea? – janakagamini

risposta

1
query.get(prevAssigneeId, { 
    useMasterKey: true 
    success: function(prevAssignee) { 
     console.log("Fetch prevAssignee: Success"); 

    } 
} 
+0

Non ha funzionato, stesso errore :( – janakagamini

+0

Ricevo anche un errore in tutte le mie query che usano la chiave principale, ma l'oggetto errore non è definito. –