Parse platform 使用地理点更新解析中的记录
我通过数据上传器以CSV格式上传了大约600000条记录。我的经度和纬度列是分开的。我正试图用这个脚本修改云代码中的类。它有时会更新,有时会出错。有人能帮我写这个脚本吗?或者有没有一种我不知道的方法可以做到这一点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
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说它正在完成,但它没有。我仍然有很多位置点没有结合经度和纬度。这可能是云代码的问题