2014-09-23 24 views
6

Birkaç günlüğüne bir HTTP İsteği'nden aldığım bir dosyayı kaydetme ile uğraşıyordum.CloudCode kullanarak Parse.com'daki URL'den bir Görüntüyü Kaydetme

Parse.Cloud.httpRequest({ 
    url: "https://ss1.4sqi.net/img/categories_v2/food/vietnamese_88.png", 
    success: function(httpImgFile) 
    { 
     console.log("httpImgFile: " + String(httpImgFile.buffer)); 
     var imgFile = new Parse.File("imgFile1.png", httpImgFile.buffer);            
     object.set("location", "newYork"); //object is a PFObject retrieved earlier 
     object.set("icon1", imgFile); 
     object.save(null, { 
      success: function(gameScore) { 
      response.success("saved object"); 
      }, 
      error: function(gameScore, error) { 
      response.error("failed to save object"); 
      } 
     });  
    }, 
    error: function(httpResponse) 
    { 
     console.log("unsuccessful http request"); 
     response.error(responseString); 
    } 
}); 

alıyorum hatadır: İşte benim kodudur

Failed with: TypeError: Cannot call method 'then' of undefined 
    at Object.b.File.save (Parse.js:2:14963) 
    at null.<anonymous> (Parse.js:2:30041) 
    at e (Parse.js:2:6339) 
    at Parse.js:2:7092 
    at g (Parse.js:2:6829) 
    at c.extend.then (Parse.js:2:7077) 
    at Parse.js:2:30016 
    at Array.forEach (native) 
    at Function.x.each.x.forEach (Parse.js:1:661) 
    at Function.b.Object._deepSaveAsync (Parse.js:2:29993) 

bu konuda tuhaf kısmı ben değiştirmek mümkün duyuyorum object.set("icon1", imgFile) çizgi eklediğinizde hata yalnızca oluşur olmasıdır object yeri problemsiz. Hata, yalnızca imgFile'u icon1

'a kaydetmeye çalıştığımda oluşur. Herhangi bir yardım büyük ölçüde takdir edilecektir. Teşekkürler!

+0

Nesnenin değişkeni nereden geliyor? Nesne türü nedir? – wayne

+0

nesnesi, "OuterList" tipi bir PFObject'dir. Muhtemelen –

cevap

4

Belgelere (https://parse.com/docs/js_guide#files) göre, başka bir nesneye koymadan önce Parse Dosyasını kaydetmeniz gerekir. Tipik

:

imgFile.save().then(function() { 

    ... 
    object.set("icon1", imgFile); 

    return object.save(); 

}).then(function (gameScore) { 
    response.success("saved object"); 
}, function (error) { 
    response.error("failed to save object"); 
}); 

Ben de böyle istekleri bir dizi ile uğraşırken biraz daha kolay olduğu gibi, söz deseni göstermek için fonksiyonun bu kısmını yeniden yazdı.

+0

Hi Tom'dan çok yardımcı olmaz. Önerin için teşekkürler. Tanımladığınız gibi ayarlamadan önce imgFile kaydetmeyi denedim ama yine de aynı hatayla karşılaşıyorum. İndirilen imgFile formatıyla ilgili bir şey olduğunu mu düşünüyorsunuz? –

+0

Aşağıdaki var deneyi deneyebilirsiniz var imgFile = httpImgFile.buffer.toString ('base64'); –

+0

Öneri için teşekkürler Tom. Ne yazık ki, hala hayır şansı: Hata: Yakalama Bir Dizeden bir Parse.File oluşturma henüz desteklenmiyor. (Kod: 141, Sürümü: 1.2.21) girilen sonuç bloğu –