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 andereconsole.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.
Sie müssen verwenden query.get (prevAssigneeId, { useMasterKey: true, Erfolg: function (prevAssignee) { – jiawen
@jiawen Das hat nicht funktioniert, habe ich versucht, einen anderen Ansatz, der auch didn‘ Irgendwelche Ideen? – janakagamini