*简单*解析云代码查询失败“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检索该信息”的主要内容,如果未能解决你的问题,请参考以下文章

解析云代码查询不触发成功或错误

解析云代码嵌套查询时未调用代码 141 成功/错误消息

将服务器云代码查询解析为指针

爱快设置阿里云域名解析更新结果失败

Prisma 查询解析器失败:“where 选择器的参数无效”

解析云代码错误 - “需要主密钥”?