6

ここ数日間、HTTP リクエストから取得したファイルを保存するのに苦労しています。これが私のコードです:

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

私が得るエラーは次のとおりです。

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)

object.set("icon1", imgFile) このすべての最も奇妙な部分は、問題なく場所を変更できる行を含めた場合にのみエラーが発生するobjectことです。に保存しようとしたときにのみエラーが発生しimgFileますicon1

どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

4

ドキュメント ( https://parse.com/docs/js_guide#files )に従って、別のオブジェクトに設定する前に解析ファイルを保存する必要があります。

通常:

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

また、このような一連のリクエストを処理するときに少し簡単になるように、promise パターンを説明するために関数のこの部分を書き直しました。

于 2014-09-23T06:54:29.463 に答える