Parse platform parse.com云代码:未保存对象列表中的一些
在过去的几天里,我是个新手,我想知道是否有人知道我的问题是什么。我正在尝试创建一个后台作业,该作业从外部服务器检索字符串列表,然后在该列表中循环,使用CAN函数保存包含这些字符串的对象。服务器返回20个项目的列表,但只保存9个对象。更奇怪的是,似乎保存对象的函数甚至没有被调用到i 这是我的密码:Parse platform parse.com云代码:未保存对象列表中的一些,parse-platform,parse-cloud-code,Parse Platform,Parse Cloud Code,在过去的几天里,我是个新手,我想知道是否有人知道我的问题是什么。我正在尝试创建一个后台作业,该作业从外部服务器检索字符串列表,然后在该列表中循环,使用CAN函数保存包含这些字符串的对象。服务器返回20个项目的列表,但只保存9个对象。更奇怪的是,似乎保存对象的函数甚至没有被调用到i 这是我的密码: var MyObject = Parse.Object.extend("MyObject"); Parse.Cloud.job("getNew", function (request, status)
var MyObject = Parse.Object.extend("MyObject");
Parse.Cloud.job("getNew", function (request, status) {
// Set up to modify user data
Parse.Cloud.useMasterKey();
var newObjects;
Parse.Cloud.httpRequest({
url: 'myURL',
success: function (httpResponse) {
newObjects = httpResponse.data;
var arrayLength = newObject.length;
console.log('got ' + newObjects.length + ' new Objects');
for (var i = 0; i < arrayLength; i++) {
console.log('saving Object ' + newTopics[i]);
Parse.Cloud.run('saveObject', {
name: newObjects[i]
}, {
success: function (message) {
console.log(message);
},
error: function (error) {
console.log(error);
}
});
}
status.success("New Objects Added.");
},
error: function (httpResponse) {
console.error('Request failed with response code ' + httpResponse.status);
status.error('Request failed with response code ' + httpResponse.status);
}
});
});
Parse.Cloud.define("saveObject", function (request, response) {
var query = new Parse.Query("Review");
var name = request.params.name;
var object = new MyObject();
object.set("name", name);
object.set("nameLowerCase", name.toLowerCase());
console.log('saving the object ' + object.get("name"));
object.save(null).then(
function (object) {
response.success('New object created with objectId: ' + object.get("name"));
},
function (error) {
console.log('Failed to create new object, with error code: ' + error.message);
});
});
var MyObject=Parse.Object.extend(“MyObject”);
Parse.Cloud.job(“getNew”,函数(请求,状态){
//设置以修改用户数据
Parse.Cloud.useMasterKey();
var新对象;
Parse.Cloud.httpRequest({
url:'myURL',
成功:函数(httpResponse){
newObjects=httpResponse.data;
var arrayLength=newObject.length;
log('get'+newObjects.length+'newObjects');
对于(var i=0;i
我的作业日志输出显示,甚至没有为未保存的项调用saveObject函数,即使为这些项调用save object调用之前的行上的console log语句没有被记录
感谢所有读到这篇文章的人,我真的非常感谢他们的帮助 在将代码更改为使用
saveAll()
之前,代码失败的原因是您在for
循环中启动了一系列异步调用,一旦启动完最后一个循环,您就继续调用status.success()
,从而终止代码。。。您没有等待异步任务完成
一种方法是创建一个数组,将所有run()
调用(返回承诺)放在其中,然后在Parse.Promise.when(promises.)的then块中调用success()
var承诺=[];
对于(var i=0;i
承诺是你的朋友,学习它们,爱它们,它们会让你的生活更轻松 我找到了一种使用Parse.Object.saveAll()保存所有项目的方法。我仍然不明白以前的方法不起作用,但也许我应该用这个作为答案。你应该使用Parse.Object.saveAll
或每个toSave对象需要2个请求(Parse.cloud.run
和Object.save
)来保存以前的方法。
var promises = [];
for (var i = 0; i < arrayLength; i++) {
console.log('saving Object ' + newTopics[i]);
promises.push(Parse.Cloud.run('saveObject', {
name: newObjects[i]
}, {
success: function (message) {
console.log(message);
},
error: function (error) {
console.log(error);
}
}));
}
Parse.Promises.when(promises).then(function() {
status.success("New Objects Added.");
});