2016-02-12 17 views
5

'a geçiş yaptıktan sonra çalışmıyor Parse blogumdaki taşıma rehberi uyarınca Parse uygulamamı Heroku'ya taşıdım. Bulut kodumda sorgu yürütmek dışında işler iyi görünüyor.Bulut kodundaki ayrıştırma sorgusu, 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 
     } 
    }); 
}); 

Hata Parse barındırılan zaman ince çalıştırmak için kullanılan

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

Bu bulut kodu: İşte benim kodudur. Ama göç ettikten sonra yukarıdaki hatayı alıyorum. ParseQuery kullanmayan diğer bulut kodları hala iyi çalışıyor.

Sorunun ne olabileceği hakkında bir fikir var mı?

  • :

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

    Şimdi aşağıdaki davranış fark:

    Yine GÜNCELLEME

    bunun için bir çözüm bulmak mümkün değildi bu yüzden aşağıdaki kodu değiştirmeden çalıştı Olduğu gibi çalıştırın, aynı hatayı üretir: [ ParseError { code: undefined, message: 'unauthorized' }, ParseError { code: undefined, message: 'unauthorized' } ]

  • Eğer unco Hata Parse.Cloud.userMasterKey();, hata yok, ancak başarı bloğunda herhangi bir şey yapmayacaksınız, yani "Bu satır yürütüldü!". Diğer console.log(...) ifadeleri işe yarıyor çünkü günlüğün kendisi çalışıyor olduğunu doğrulayabilirim.

Bilginize: Item sütunlar assignee ve _User s işaretçileri prevAssignee olmak sütunlu bir Ayrıştırma sınıftır.

Herhangi bir yardım çok takdir edilmektedir. Gerçek, başarı:

+0

Sen query.get (prevAssigneeId, { useMasterKey kullanmaya gerek işe yaramadı fonksiyonu (prevAssignee) {Bu @jiawen – jiawen

+0

, ben de mi' farklı bir yaklaşım denedi Herhangi bir fikir mi? – janakagamini

cevap

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

    } 
} 
+0

Çalışmıyor, aynı hata :( – janakagamini

+0

Ayrıca ana anahtar kullanan tüm sorgularımda bir hata alıyorum, ancak hata nesnesi tanımsız. –