Parse.com在循环中保存对象,只保存最后一个对象


Parse.com save objects in a loop only saving the last object

我有以下代码将多个对象保存到我的parse.com表中。我已经调试了我的代码,一切都应该正常工作。此代码保存n个对象,所有对象都具有与上一个对象相同的信息。正在正确保存图像。

图像和标题只是两个长度相同的数组。

我认为问题是因为我必须等待上一次保存的回调或php代码完成。我也在动态更改图像库。

我看到了非常相似的问题发布,但我尝试了解决方案,但没有奏效:Parse.com保存对象一次在这里只有第一个对象被保存在循环的javascript中

知道我在这里做错了什么吗?

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);
});