使用 Cloud Code 检索 Parse 对象的一部分

Posted

技术标签:

【中文标题】使用 Cloud Code 检索 Parse 对象的一部分【英文标题】:Retrieve part of a Parse Object using Cloud Code 【发布时间】:2015-02-19 19:56:08 【问题描述】:

在我的Users 类中,我有一个名为passwordChanged 的参数。我只想返回那个参数。我没有用户objectId,只有他们的username(在我在我的应用程序中使用此代码的情况下,我必须处理这种情况)。

鉴于下面的代码,Cloud Code 返回整个对象。我怎样才能只返回一个参数。

我的第二个问题是,当我调用 Cloud Code 函数并打印 result 时,我得到了一个 nill 值。但是如果我再次调用该函数,我会得到整个对象。在玩弄了我的代码之后,我可以 100% 说检索数据有延迟(显然),但我的应用程序并没有像它应该的那样等待(同时,如果我在我的应用程序中使用一般查询,我的应用程序会等待)。第二次填充result 的原因是因为它在技术上已经从上一次填充(但延迟导致值“出现”为nil。)如果我不是,请告诉我有道理!

另外,我对云代码 (javascript) 还很陌生,所以我可能犯了一些我看不到的明显错误。

应用代码:

PFCloud.callFunctionInBackground("checkAccountStatus", withParameters: ["username" : self.userText.text]) 
            (result: AnyObject!, error: NSError!) -> Void in

                println (result) // First time around "nill" is displayed. Second time around, entire object data is displayed.
        

云代码:

Parse.Cloud.define("checkAccountStatus", function(request, response) 
Parse.Cloud.useMasterKey();

var query = new Parse.Query(Parse.User);
query.equalTo("username", request.params.username);
query.first(
        success: function(getUserData) 

            var passwordChanged = getUserData;
            response.success(passwordChanged);

        ,
        error: function(error) 

            response.error("There was an error");

        
);
);

【问题讨论】:

【参考方案1】:

改变这一行:

var passwordChanged = getUserData;

到:

var passwordChanged = getUserData.get("passwordChanged");

如果“passwordChanged”是您要返回的列的名称。

更新

1:例如创建一个数组来保存像var results = [];这样的值

2:像上面一样创建一个查询,并在该查询成功处理程序中使用results.push("whatever_you_want");将您想要的列添加到结果数组中

3:之后,在第一个查询成功处理程序中,创建另一个查询,并使用您想要的任何内容进行设置

4:在嵌套查询成功处理程序中,只需附加与步骤 2 相同的结果。

【讨论】:

谢谢!如果您不介意再帮我一些忙,我怎样才能同时返回两个参数/列?

以上是关于使用 Cloud Code 检索 Parse 对象的一部分的主要内容,如果未能解决你的问题,请参考以下文章

解析 Cloud Code 关系查询语法

如何使用 Parse Cloud Code 更新对象的属性?

Parse Server Cloud Code:级联删除多个类中的对象

在 Parse Cloud Code 中保存“没有数据的对象”指针

将 JSON 数据从 Parse Cloud Code 返回到 Swift 中的可解码结构

将 Parse Server 减少为仅 Parse Cloud