我这边有一个奇怪的问题。我有一个使用Parse.com构建的项目作为后端(使用云代码来验证与数据库建立连接时的某些事情)。一切都按照应有的方式运作。
但问题出现了。另一位开发人员向我报告说有一些错误,因为他正在接受“未定义”的错误。每次他试图在CloudCode中调用request.object.get('KEY')
。这个开发人员使用与我完全相同的代码库。
所以我决定看看它。使用我的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();
}
});
每次request.object.get('KEY')
返回undefined
时,对于我之前在iOS代码中定义的每个键,都会在上传PFObject
之前。
请注意,使用我的个人帐户,一切都很好......
我已经看过this个帖子,但删除ACL并没有做到这一点。 request.object.get()
保持未定义,同时为除了我的每个测试的Parse帐户定义request.user
。
编辑1
在上传活动对象之前,我还看了一下活动对象,并且所有字段都已正确设置。
编辑2
完全删除云代码后,对象被正确上传到Parse,所有字段都是通过iOS客户端设置的方式。因此,Parse的云代码似乎有问题,但是一旦对象通过云代码,它就会丢失所有字段。
答案 0 :(得分: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"
}
}
}