2016-04-14 35 views
-1

Yeni javascript kullanıyorum, ama nasıl bir Başarı/Hata çağrısını kaçırdığımdan emin değilim, baktım ve bana çağrıldı.Başarı/Hata olarak adlandırılmadı

Parse.Cloud.job("UpdateWeekData", function(request, response) { 
var weeks = []; 
var weekCount = 0; 
var weekQuery = new Parse.Query("WeekList"); 

weekQuery.find({ 
    success: function(results) { 
     for (week in results) { 
      var weekCount = Parse.Query("Schedule"); 
      weekQuery.equalTo("weekObj", week); 
      weekQuery.count({ 
       success:function(count) { 
        var max = week.get("maxAppts"); 
        week.set("apptsRemain", (max - count)); 
        week.set("numApptsSch", count); 
        week.save(); 
       }, 
       error: function(error) { 
        response.error(error.message); 
       } 
      }); 
     } 
    } , 
    error: function(error) { 
     response.error(error.message); 
    } 
}); 
}); 

Arama kaçırdığım herhangi bir fikir var mı? Parse Cloud Code "başarı/hata çağrılmadı" diyor

cevap

0

Arka plan işi olduğu için status.error() veya status.success() numaralı telefonu this örneğindeki gibi çağırmalısınız.

Kodunuzdaki sorun, aslında her yerde status.success() numaralı telefonu aramıyorsunuz. Fonksiyonunuz bittiğinde daima status.error() veya status.success()'u aramalısınız. Her döngü için Ayrıştırma Sorgulama çağrı yapmak için biraz karmaşık hale getirir (ve çok sayıda istek yapabilir!) weekQuery.count tamamlamak için beklemeyin. Sayımı kullanmak genellikle not recommended'dur.

Ayrıca, promises'un nasıl çalıştığını öğrenmelisiniz, böylece her şey bittiğinde sorgular için beklemeyi ve hata/başarıyı nasıl çağıracağınızı öğrenmelisiniz - sorgu tamamlanmadan önce başarı/hata olarak adlandırırsanız, iptal edilir.

Belki de kendi sayma mantığını veritabanında uygulamanız gerekir veya weekObj'nin sonuçların herhangi birine eşit olduğu, tüm nesneleri bulduktan sonra her bir nesne için "weekObj" alanını bulabileceğiniz sorgulama yapabilirsiniz. eşittir. Ancak, varsayılan nesneyi ve maksimum 1000 nesneyi döndüren 100 nesne döndürdüğünü unutmayın (parse.com ve henüz Parse Sunucusu kullanmıyorsanız):

weekQuery.equalTo("weekObj", results); 
weekQuery.find();