2016-02-12 99 views
5

根據Parse博客上的遷移指南,我已將我的Parse應用程序遷移到Heroku。事情似乎很好,除了在我的雲代碼中運行查詢。這裏是我的代碼:解析雲代碼中的查詢在遷移到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 
     } 
    }); 
}); 

錯誤用於運行罰款解析託管時

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

這種雲代碼。但遷移後,我得到了上述錯誤。其他不使用ParseQuery的雲代碼仍然可以正常工作。

關於這個問題可能有什麼想法?

UPDATE

仍然沒能找到這個修復,所以我嘗試的代碼更改爲以下:

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

現在我注意到以下行爲:

  • 按原樣運行,它會產生相同的錯誤:[ ParseError { code: undefined, message: 'unauthorized' }, ParseError { code: undefined, message: 'unauthorized' } ]
  • 如果我不合作沒有錯誤,但不會在成功塊中執行任何操作,即記錄「此行已執行!」。我可以確認記錄本身正在工作,因爲其他console.log(...)聲明工作。

僅供參考:Item是一個Parse類列assigneeprevAssignee被列是指向_User秒。

任何幫助,非常感謝。

+0

您需要使用 query.get(prevAssigneeId,{ useMasterKey:真實, 成功:函數(prevAssignee){ – jiawen

+0

@jiawen這沒有工作,我嘗試了不同的方法,這也沒」 t工作(看我更新的代碼)。任何想法? – janakagamini

回答

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

    } 
} 
+0

沒有工作,同樣的錯誤:( – janakagamini

+0

我也在使用主密鑰的所有查詢中出現錯誤,但錯誤對象未定義。 –