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 instrukcjeconsole.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.
Trzeba użyć query.get (prevAssigneeId, { useMasterKey: prawdziwą, sukces: function() {prevAssignee – jiawen
@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