2016-02-12 33 views
5

Mam migrowaną aplikację Parse do Heroku zgodnie z podręcznikiem migracji na blogu Parse. Wydaje się, że wszystko działa dobrze, z wyjątkiem uruchamiania zapytania w moim kodzie chmurowym. Tu jest mój kodu:Parsowanie zapytania w kodzie chmurowym nie działa po migracji do 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 
     } 
    }); 
}); 

Error code

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

Ta chmura wykorzystane do uruchomienia dobrze, gdy gościł na przetworzenia. Ale po migracji otrzymuję powyższy błąd. Inny kod w chmurze, który nie używa ParseQuery nadal działa dobrze.

Jakieś pomysły na temat problemu?

UPDATE

Nadal nie mógł znaleźć rozwiązanie tego więc próbowałem zmiany kodu na następujące kwestie:

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); 
    }); 
}); 

Teraz zauważyłem następujący problem:

  • Działaj tak, jak jest, powoduje to ten sam błąd: [ ParseError { code: undefined, message: 'unauthorized' }, ParseError { code: undefined, message: 'unauthorized' } ]
  • If I unco mment Parse.Cloud.userMasterKey();, nie ma błędów, ale nie wykonamy niczego w bloku sukcesu, tj. log "Ta linia została wykonana!". Mogę potwierdzić, że samo logowanie działa, ponieważ inne instrukcje console.log(...) działają.

Wystarczy FYI: Item jest klasą Parse z kolumnami assignee i prevAssignee będących kolumn, które są wskaźnikami do _User s.

Każda pomoc jest doceniana.

+0

Trzeba użyć query.get (prevAssigneeId, { useMasterKey: prawdziwą, sukces: function() {prevAssignee – jiawen

+0

@jiawen ten nie działa, próbowałem innego podejścia, które również nie zrobił” t pracy (zobacz mój zaktualizowany kod). Wszelkie pomysły? – janakagamini

Odpowiedz

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

    } 
} 
+0

Nie działa, ten sam błąd :( – janakagamini

+0

Otrzymuję również błąd we wszystkich moich kwerend, które używają klucza głównego, ale obiekt błędu jest niezdefiniowany. –