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

标签 javascript php arrays parse-platform

我有以下代码将多个对象保存到我的 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/

相关文章:

javascript - 更改 JSON 数组中的值并返回更新的数组 JS

java - 将 C 语句转换为 Java (Array[][] != 0)

javascript - jquery复选框选中计数问题

javascript - 递减集合中的值直到 0

php - 如果未选中复选框,则从表中删除

php - 只返回数字的函数?

c - Incomplete数组类型是否保证能够存储一个元素?

javascript - ng-annotate 错误与 Babel 和解构

javascript - 警告 findDomNode

php - 为什么两个 select 查询不能在一个 php 代码中执行?