*简单*解析云代码查询失败“TypeError:无法调用未定义的方法'get'\n检索该信息”
Posted
技术标签:
【中文标题】*简单*解析云代码查询失败“TypeError:无法调用未定义的方法\'get\'\\n检索该信息”【英文标题】:*Simple* Parse Cloud Code query failure "TypeError: Cannot call method 'get' of undefined\n retrieve that info "*简单*解析云代码查询失败“TypeError:无法调用未定义的方法'get'\n检索该信息” 【发布时间】:2015-03-03 02:41:51 【问题描述】:几个小时以来,我一直在尝试做一些非常简单的事情,但我不知道自己做错了什么。我试图通过 Cloud Code 从我的 Parse 数据集中查询第一个人的用户名很简单,然后我想把它带到我的 ios 应用程序中。尽管进行了所有尝试,但它似乎并没有奏效。下面你会找到我的代码。
Parse.Cloud.define("userName", function(request,response)
var query = new Parse.Query(Parse.User);
query.equalTo("username", request.params.username)
query.first(
success: function(getUserName)
var userString = getUserName.get("username");
response.success(userString);
,
error: function(error)
alert("Error: " + error.code + " " + error.message);
);
);
[PFCloud callFunctionInBackground:@"userName" withParameters:@ block:^(NSString *result, NSError *error)
if (!error)
NSLog(result);
];
我也不应该确定在“用户名:”之外的“参数”部分中添加什么
编辑:此外,当我尝试部署 Parse Cloud 代码时,我得到“TypeError: Cannot call method 'get' of undefined\n”
【问题讨论】:
【参考方案1】:查看您的云代码,您期望request.params.username
包含一个值,您可以使用该值通过username
列在User
类中查找。我通常通过一个键访问params
对象的属性(我不确定这是否需要,我只知道它对我有用)。尝试改变
query.equalTo("username", request.params.username)
到
query.equalTo("username", request.params["username"]);
然后,您需要将该数据导入云功能。你的 Objective-C 代码传入了一个空的参数块,所以在上面查找任何东西都会导致很多什么都没有。将您的 PFCloud
呼叫更改为
[PFCloud callFunctionInBackground:@"userName" withParameters:@@"username": @"theusernameyouwanttolookup" block:^(NSString *result, NSError *error)
希望你能有更好的运气。
【讨论】:
感谢您的帮助。我已经编辑了上面的内容以包括我得到的“get”错误。由于代码无法部署,我不确定您的建议是否有效。 你的问题是它不会部署,还是它不会执行?该错误消息看起来像是在执行而不是部署时发生的。尝试更正查询,修复您的 Objective-C 以传递用户名,重新部署,然后再次运行。 它不会执行。很抱歉造成混乱。 另外,您建议的代码并没有真正改变任何东西,因为如果我没记错的话,javascript 通过句点和括号访问函数。最终我想做的是打印我从 Parse 数据中获取的第一个用户的字符串。 我确实注意到我不确定是否需要更改 javascript...您是否尝试过我提供的 Objective-c 代码?【参考方案2】:想通了。我的错误来自对 Javascript 的理解不足。
下面的云代码得到了我想要的。
Parse.Cloud.define("userName", function(request,response)
var query = new Parse.Query(Parse.User);
query.equalTo("username", request.params.username);
query.first(
success: function(object)
var userString = request.params.username;
response.success(userString);
,
error: function(error)
alert("Error: " + error.code + " " + error.message);
);
);
我犯的错误是我试图在一个无法访问上述方法的对象上使用“.get”方法。奇怪的是我尝试对request.object.get("username")
做同样的事情,但显然请求对象也无法访问 .get 方法(令人困惑,因为 Parse 文档似乎表明它在其示例中确实如此)。因此,结合下面的 rickerbh 的 Objective-c 代码执行上述操作得到了我想要的结果。
如果有人可以在此处发布与 Parse 的云代码相关的 .get 方法的性质,将会有所帮助。干杯。
【讨论】:
您没有在任何地方使用“对象”!你只是返回请求的用户名?以上是关于*简单*解析云代码查询失败“TypeError:无法调用未定义的方法'get'\n检索该信息”的主要内容,如果未能解决你的问题,请参考以下文章