我有以下代码将多个对象保存到我的 parse.com 表中。 我已经调试了我的代码,一切都应该正常工作。 此代码正在保存 n 个对象,所有对象的信息都与最后一个对象相同。图像正在正确保存。
图像和标题只是两个长度相同的数组。
我认为问题是因为我必须等待上一个保存的回调或 php 代码完成。我也在即时更改图像基础。
我看到了非常相似的问题,但我尝试了解决方案,但没有成功: Parse.com save object once 和这里 only first object getting saved in javascript for loop
知道我在这里做错了什么吗?
for(i = 0; i < images.length; i++){
var caption = convert(captions[i]);
//change image to base64
$.post("base64.php", {base64: images[i]}, function(data){
var image = data;
var post = new Post();
post.set("post", id);
post.set("number", i + 1);
post.set("by", by);
post.set("title", title);
post.set("description", description);
post.set("caption", caption);
post.set("views", 0);
post.set("type", "image");
var parseImage = new Parse.File("image.png", {base64: image});
post.set("image", parseImage);
post.save(null, {
success: function(messages) {
},error: function(messages, error) {
}
});
});
}
最佳答案
将它们批量化:
var posts = [];
for(i = 0; i < images.length; i++){
var caption = convert(captions[i]);
//change image to base64
$.post("base64.php", {base64: images[i]}, function(data){
var image = data;
var post = new Post();
post.set("post", id);
post.set("number", i + 1);
post.set("by", by);
post.set("title", title);
post.set("description", description);
post.set("caption", caption);
post.set("views", 0);
post.set("type", "image");
var parseImage = new Parse.File("image.png", {base64: image});
post.set("image", parseImage);
// push to array for batch saving
posts.push(post);
});
}
Parse.Object.saveAll(posts)
.then(function() {
console.log('all saved');
}, function(error) {
console.error(error);
});
关于javascript - Parse.com 在循环中保存对象,仅保存最后一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29181215/