javascript - 解析云函数失败,出现错误 141

标签 javascript ios parse-platform

我想要完成的是当我调用这个云函数 (deploy) 时,它会首先删除 toClass 中的所有数据,然后迭代 中的对象code>fromClass,复制保存到toClass。当它保存一个对象时,它也会从 fromClass 中删除它。简而言之,将对象从一个类移动到另一个类。在客户端调用此函数

[PFCloud callFunctionInBackground:@"deploy" withParameters:@{@"toClass": kTilrClassUpdates, @"fromClass": kTilrClassPrototypeUpdates} block:^(id object, NSError *error) {
    if (error) {
        [self failed];
    } else {
        [self succeeded];
    }
}];

将此错误消息打印到客户端日志:Error: undefined (Code: 141, Version: 1.2.19)

这是 Parse Cloud 的代码:

Parse.Cloud.define("deploy", function(request, response) {
    var query = new Parse.Query(request.params.toClass);
    query.find({
        success: function(results) {
            for (var i = 0; i < results.length; ++i) {
                console.log(results[i]);
                results[i].destroy({
                    success: function(object) {

                    },
                    error: function(object, error) {
                        response.error(error);
                    }
                });
            }
        },
        error: function() {
            response.error(error);
        }
    });
    var query2 = new Parse.Query(request.params.fromClass);
    query2.find({
        success: function(results) {
            for (var index = 0; index < results.length; ++index) {
                var UpdateInfoClass = Parse.Object.extend(request.params.toClass);
                var updateInfo = new UpdateInfoClass();
                for (var k in results[index]) {
                    updateInfo.set(k, results[index][k]);
                }
                console.log(updateInfo);
                updateInfo.save(null, {
                    success: function(updateInfo) {
                        results[index].destroy();
                        if (index == results.length - 1) {
                            response.success();
                        }
                    },
                    error: function(updateInfo, error) {
                        response.error(error);
                    }
                });
            }
        },
        error: function() {
            response.error(error);
        }
    });
});

我真的不太了解 JavaScript,所以这可能是某个地方的一个非常简单的错误。

最佳答案

有几个部分可以保证为您解决问题: 不质疑您的设计:

1) 查询没有链接在一起,将同时运行

2) 你不能使用

for (var k in results[index]) {
    updateInfo.set(k, results[index][k]);
}

将属性从一个对象复制到另一个对象。 您需要调用 JSON.stringify(results[index]) 来获取标准数组。 您应该通过 request.object.set(fiedlName, value) 来设置值。

3) “索引”不会正确地传播到子 block 中 - 将它登录到控制台中,您会看到,因为这些查询也没有链接起来,它会立即运行,因此索引会有一些值(value)或最后一个因为它很快

但是,您的方法设计有问题:

parse 上的数据库与普通的 sql 数据库有点不同,您也许应该重新设计您的方法,也许使用一个类并仅按名称标记对象的类或更改其状态(已部署 = 0/1),这很难猜测你想完成什么,但你的方式肯定会出现一些问题。

另请注意,云代码函数确实有一些超时,因此一旦您拥有更多对象,您可能无法保存所有对象。 (150个对象是乐观的看法)

您可以通过编写适当的“.beforeSave”函数来实现您的解决方案,该函数在您保存对象时触发,这样您就可以根据您的标准用新对象替换旧对象...

关于javascript - 解析云函数失败,出现错误 141,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24723358/

相关文章:

javascript - 日期选择器至少一天

ios - 由于 LLVM 仪器符号或代码覆盖率,尽管找不到任何符号或代码覆盖率,但构建被 Apple 拒绝

ios - 显示带有实时摄像头层和 native 系统铃声的传入视频调用屏幕,同时尊重铃声音量级别

javascript - 在 2 个 Controller 和路由之间共享服务

javascript - 异步 node.js 代码(使用 Q)不写入标准错误

javascript - 如何使用 Javascript/HTML5 在一行中随机生成对象?

ios - 在应用程序中解析客户端 ID (AppDelegate.M) 如何在应用程序中添加和设置

ios - 从 Swift 和 React Native 访问相同的持久存储

ios - 关系查询后解析编辑对象

ios - 如何在 Parse.com iOS 上禁用离线错误警报?