解析request.object.get("KEY")总是返回undefined

Eri*_*net 8 javascript ios parse-platform parse-cloud-code

我这边有一个奇怪的问题.我有一个使用Parse.com构建的项目作为后端(使用云代码来验证与数据库建立连接时的某些事情).一切都按照应有的方式运作.

但问题来了.另一位开发人员向我报告说有一些错误,因为他每次尝试使用request.object.get('KEY')CloudCode时都会"未定义" .这个开发人员使用与我完全相同的代码库.

所以我决定看看它.使用我的Parse帐户,每个应用程序都可以正常工作(甚至是新创建的应用程序),使用其他开发人员的Parse帐户,而不是我们创建的单个新应用程序似乎使用完全相同的代码.它变得更加陌生 - 创建一个全新的Parse帐户和一个新的应用程序产生相同的错误,而我的个人帐户和应用程序继续正常工作.

那么问题是什么?我们正在使用CloudCode,这里是beforeSave方法的示例代码(在javascript中):

Parse.Cloud.beforeSave('Activity', function(request, response) {
   var currentUser = request.user;
   var objectUser = request.object.get('fromUser');
   if(!currentUser || !objectUser) {
     response.error('An Activity should have a valid fromUser.');
   } else {
     response.success();
   }
});
Run Code Online (Sandbox Code Playgroud)

对于我之前在iOS代码中定义的每个键,每次request.object.get('KEY')返回undefined之前都会返回PFObject.请注意,使用我的个人帐户一切都很好......

我已经看过这个帖子,但是删除ACL并没有做到这一点.request.object.get()保持未定义,同时request.user为除了我的每个测试的Parse帐户定义.

编辑1

我还在上传活动对象之前查看了活动对象,并且所有字段都已正确设置.

编辑2

完全删除云代码后,对象被正确上传到Parse,所有字段都是通过iOS客户端设置的方式.因此,Parse的云代码似乎有问题,但是一旦对象通过云代码,它就会丢失其所有字段.

Eri*_*net 8

最后我能够解决这个问题.这绝对是Parse的Javascript SDK中的一个错误.我将global.json中的Javascript SDK版本更改回版本"1.4.2"而不是"latest",将其上传到cloudcode文件夹,一切都恢复正常.

你也可以测试其他版本,也许v1.5.0也在工作,但是一旦我发现v1.4.2工作正常,我没有尝试更新的版本.

编辑

所以,我发现,Parse必须在命令行工具中改变一些东西.如果您使用最新版本的命令行工具创建CloudCode文件夹,似乎global.json文件不再存在.但是,您可以手动创建它并将完整文件夹上载到Parse应用程序.

这就是我的CloudCode文件夹的样子,例如:CloudCode文件夹包含三个子文件夹

•云 - 包含云代码文件

•config - 包含global.json文件

•public - 包含index.html文件

global.json文件包含以下代码行:

{
  "global": {
    "parseVersion": "1.4.2"
  },
  "applications": {
    "YOUR_PARSE_APPS_NAME": {
      "applicationId": "YOUR_APP_ID",
      "masterKey": "YOUR_APP_MASTER_KEY"
    },
    "_default": {
      "link": "YOUR_PARSE_APPS_NAME"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)