2016-02-12 5 views
5

Ich habe meine Parse-App gemäß dem Migrationsleitfaden im Parse-Blog nach Heroku migriert. Die Dinge scheinen gut zu funktionieren, außer das Ausführen einer Abfrage in meinem Cloud-Code. Hier ist mein Code:Parse-Abfrage im Cloud-Code funktioniert nach der Migration nach Heroku nicht

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

Fehler

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

Diese Wolke Code verwendet fein ausgeführt werden, wenn auf Parse gehostet. Aber nach der Migration bekomme ich den obigen Fehler. Anderer Cloud-Code, der ParseQuery nicht verwendet, funktioniert weiterhin einwandfrei.

Irgendwelche Ideen, was das Problem sein könnte?

UPDATE

Noch nicht in der Lage für diese ein Update zu finden, so habe ich versucht, den Code auf die folgende Veränderung:

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

Jetzt habe ich das folgende Verhalten bemerkt:

  • Laufen wie es ist, erzeugt es den gleichen Fehler: [ ParseError { code: undefined, message: 'unauthorized' }, ParseError { code: undefined, message: 'unauthorized' } ]
  • Wenn ich unco mment Parse.Cloud.userMasterKey();, gibt es keine Fehler, aber wird nichts im Erfolgsblock ausführen, entweder log "Diese Zeile wurde ausgeführt!". Ich kann bestätigen, dass die Protokollierung selbst funktioniert, weil andere console.log(...) Anweisungen funktionieren.

Gerade FYI: Item ist ein Parse-Klasse mit Spalten assignee und prevAssignee sind Spalten, die Zeiger auf _User s sind.

Jede Hilfe wird sehr geschätzt.

+0

Sie müssen verwenden query.get (prevAssigneeId, { useMasterKey: true, Erfolg: function (prevAssignee) { – jiawen

+0

@jiawen Das hat nicht funktioniert, habe ich versucht, einen anderen Ansatz, der auch didn‘ Irgendwelche Ideen? – janakagamini

Antwort

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

    } 
} 
+0

Hat nicht funktioniert, selbe Fehler :( – janakagamini

+0

Ich bekomme auch einen Fehler in allen meinen Abfragen, die Hauptschlüssel verwenden, aber das Fehlerobjekt ist nicht definiert. –