Parse platform 使用地理点更新解析中的记录

Parse platform 使用地理点更新解析中的记录,parse-platform,Parse Platform,我通过数据上传器以CSV格式上传了大约600000条记录。我的经度和纬度列是分开的。我正试图用这个脚本修改云代码中的类。它有时会更新,有时会出错。有人能帮我写这个脚本吗?或者有没有一种我不知道的方法可以做到这一点 Parse.Cloud.job("CreatePoints", function(request, status) { // Set up to modify user data Parse.Cloud.useMasterKey(); var records

我通过数据上传器以CSV格式上传了大约600000条记录。我的经度和纬度列是分开的。我正试图用这个脚本修改云代码中的类。它有时会更新,有时会出错。有人能帮我写这个脚本吗?或者有没有一种我不知道的方法可以做到这一点

Parse.Cloud.job("CreatePoints", function(request, status) {

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

    var recordsUpdated = 0;

    // Query for all objects with GeoPoint location null
    var query = new Parse.Query("Class");
    query.doesNotExist("location");
    query.each(function(object) {
        var location = {
            latitude: object.get("latitude"),
            longitude: object.get("longitude")
        };
        if (!location.latitude || !location.longitude) {
            return Parse.Promise.error("There was an error.");
        }

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

        // Update to GeoPoint
        object.set("location", new Parse.GeoPoint(location));
        return object.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!");
    })
});

根据评论,您的问题是一些类成员没有
经度
纬度

您可以将查询更改为仅处理同时具有以下两个值的查询:

var query = new Parse.Query("Class");
query.doesNotExist("location");
query.exists("longitude");
query.exists("latitude");
query.each(function(object) {
    // etc

这样,您就不再需要检查它们是否为空,也不再需要返回
Parse.Promise.error()
,因此不会再出现错误。

介意与我们共享错误信息吗?感谢您在“解析作业状态”选项卡中的编辑…它显示作业失败。UTC 06/28/14 09:00 PM 06/28/14 09:02 PM UTC失败脚本错误:“哦,出了点问题!”我很确定它在脚本中是很小的,因为它首先运行,它会更新很多记录,然后会超时。然后我会再次尝试运行它,但它无法运行。它立即给了我一个错误。通过管理仪表板(云代码,日志)或命令行检查日志以查看真正的错误。我猜你找到了一条
纬度
和/或
经度
为空的记录。就是这样。你知道怎么处理吗?最后一个问题。并不是我所有的记录都在更新。这是成功的,但仍然有丢失的位置没有复制过来。我做了一些事情,在上面的查询中看到了一个错误,它说“latitude的格式无效”,我想我需要将字符串转换为浮点。你能告诉我怎么做吗?使用parseFloat函数,例如
var lat=parseFloat(object.get(“latitude”)谢谢Tim,我不得不手动组合这两个字段,因为parse说它正在完成,但它没有。我仍然有很多位置点没有结合经度和纬度。这可能是云代码的问题