2
\$\begingroup\$

Using JavaScript cloud code, I'm trying to bulk convert a huge number of URL entries into actual files uploaded to Parse.com.

This code works; I just want to make it cleaner/nicer.

    Parse.Cloud.job("convertFiles", function(request, status) { //Cuts the rundata out of poor runs
    function sleep(milliseconds) {
      var start = new Date().getTime();
      for (var i = 0; i < 1e7; i++) {
        if ((new Date().getTime() - start) > milliseconds){
          break;
        }
      }
    }

    // Set up to modify user data
    Parse.Cloud.useMasterKey();

    var Debug = Parse.Object.extend("debugclass");
    var queryForDebugObj = new Parse.Query(Debug);
    queryForDebugObj.equalTo("objectId", "BsVP9W38yW");

    // Query for all users
    // var queryForSublist = new Parse.Query(Parse.Object.extend("Mini_test"));


    queryForDebugObj.find({
        success: function(results) {
            var debugObj = results[0];

            var processCallback = function(res) {
                    var entry = res[0];


                    Parse.Cloud.httpRequest({
                        url: entry.get("smallImage2"),
                        method: "GET",
                        success: function(httpImgFile) 
                        {
                            console.log("httpImgFile: " + String(httpImgFile.buffer));
                            var imgFile = new Parse.File("picture.jpg", {base64: httpImgFile.buffer.toString('base64')});

                            imgFile.save().then(function () {
                                console.log("2");
                                entry.set("smallImage1", imgFile);
                                entry.save(null, {
                                  success: function(unused) {
                                    debugObj.increment("itemsDone");
                    sleep(50); 
                                    res.shift();
                                    if (res.length === 0) {
                                        process(entry.id);
                                        return;
                                    }
                                    else {
                                        processCallback(res);
                                    }


                                  },
                                  error: function(unused, error) {
                                    response.error("failed to save entry");
                                  }
                                });    
                            });                                             
                        },
                        error: function(httpResponse) 
                        {
                            console.log("unsuccessful http request");
                            response.error(responseString);
                        }
                    });
            };
            var process = function(skip) {{
                var queryForSublist = new Parse.Query("Mini_test");

                if (skip) {
                    queryForSublist.greaterThan("objectId", skip);
                    console.error("last object retrieved:" + skip);
                }
                queryForSublist.limit(1000);
                queryForSublist.ascending("objectId");
                queryForSublist.find().then(function querySuccess(res) {
                    processCallback(res);
                }, function queryFailed(reason) {
                    status.error("query unsuccessful, length of result " + result.length + ", error:" + error.code + " " + error.message);
                });
            }};

            process(debugObj.get("LastObject"));

        },
        error: function(error) {
            status.error("xxx Uh oh, something went wrong 2:" + error + "  " + error.message);
        }
    });  
});
\$\endgroup\$
0

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.