2014-02-15 56 views
3

我已將16,000行csv導入到Parse.com類中。現在我需要將緯度和經度字段轉換爲Parse.com GeoPoint數據類型字段。如何將緯度和經度字段複製到Parse.com上的GeoPoint中

我已經添加了GeoPoint字段,現在必須運行更新以將每行的lat/lng數據複製到它們各自的GeoPoint字段中。

在API或Parse.com界面中,哪裏可以做到這一點?我似乎無法找到它。我知道這是可能的,因爲開發團隊會忽略這樣的功能。

+1

你可以發佈你的16K csv文件的樣本 – Mozzie

+0

它有三個字段:標題,緯度和經度。 – Plywood

+0

我想我可以用Parse CloudCode來做到這一點。如果成功,我會發布我的結果。 – Plywood

回答

4

解決方案確實是使用CloudCode的create a Job。這裏是一個JavaScript的例子:

Parse.Cloud.job("airportMigration", function(request, status) { 
    // Set up to modify user data 
    Parse.Cloud.useMasterKey(); 

    var recordsUpdated = 0; 

    // Query for all airports with GeoPoint location null 
    var query = new Parse.Query("Airports"); 
    query.doesNotExist("location"); 
    query.each(function(airport) { 
     var location = { 
      latitude: airport.get("latitude_deg"), 
      longitude: airport.get("longitude_deg") 
     }; 
     if (!location.latitude || !location.longitude) { 
      return Parse.Promise.error("There was an error."); 
      // return Parse.Promise.resolve("I skipped a record and don't care."); 
     } 

     recordsUpdated += 1; 
     if (recordsUpdated % 100 === 0) { 
      // Set the job's progress status 
      status.message(recordsUpdated + " records updated."); 
     } 

     // Update to GeoPoint 
     airport.set("location", new Parse.GeoPoint(location)); 
     return airport.save(); 
    }).then(function() { 
     // Set the job's success status 
     status.success("Migration completed successfully."); 
    }, function(error) { 
     // Set the job's error status 
     console.log(error); 
     status.error("Uh oh, something went wrong."); 
    }); 
}); 
+0

當你評論承諾錯誤並取消註釋promise.resolve時,你的工作不起作用。我有一個類型錯誤:對象function(){this._resolved =!1,this._rejected =!1,this._resolvedCallbacks = [],this._rejectedCallbacks = []}沒有方法'resolve' 您能否修復它?謝謝! – Stephane