parsingrequest.object.get(“KEY”)总是返回undefined

我在这里有一个奇怪的问题。 我有一个使用Parse.com构build的项目作为后端(使用云代码来validation与数据库build立连接时的一些事情)。 一切正常,就像它应该做的一样。

但问题来了。 另一个开发者向我报告说,有什么问题,因为他每次尝试在CloudCode中调用request.object.get('KEY')时都会得到'undefined'。 这个开发者使用和我一样的代码库。

所以我决定看一下。 而我的Parse帐户,每个应用程序工作正常(甚至新创build的),与其他开发人员的parsing帐户,而不是我们创build的一个新的应用程序似乎使用完全相同的代码。 它变得越来越陌生 – 创build一个全新的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(); } }); 

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

我已经看到这个线程,但是删除ACL并没有办法。 request.object.get()保持未定义状态,而request.user则是针对除我之外的每个testing过的Parse帐户定义的。

编辑1

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

编辑2

完全删除云代码后,对象正确地上传到Parse,所有的字段都是通过iOS客户端设置的。 因此,似乎Parse的云代码有些问题,但只要一个对象通过云代码,它就会丢失所有的字段。

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

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

编辑

所以,我发现,Parse必须改变他们的命令行工具。 看起来global.json文件不存在了,如果你使用他们的命令行工具的最新版本创build你的CloudCode文件夹。 但是,您可以手动创build它并将完整的文件夹上传到您的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" } } }