Parse-JavaScript指针查询,从指针返回解析对象

Parse-JavaScript指针查询,从指针返回解析对象,javascript,pointers,parse-platform,Javascript,Pointers,Parse Platform,我有一个具有多个指针的类,我希望在响应中返回它们的完整对象(如SQL中的联接)。下面的示例就是这样做的,但它返回的是JSON而不是解析对象。如何返回一个包含指针中每个解析对象的对象数组,而无需对每个指针进行额外的查询 query.find().then(function(results){ /* Go Through Each Comment*/ var commentsArray = new Array(); for(i in resul

我有一个具有多个指针的类,我希望在响应中返回它们的完整对象(如SQL中的联接)。下面的示例就是这样做的,但它返回的是JSON而不是解析对象。如何返回一个包含指针中每个解析对象的对象数组,而无需对每个指针进行额外的查询

    query.find().then(function(results){
        /* Go Through Each Comment*/
        var commentsArray = new Array();
        for(i in results){
            /* Set obj to current comment*/
            var obj = results[i];
            /* Get Post's Name */
            var postName = obj.get("post").get("postName");
            /* Get Post's Message */
            var postMsg = obj.get("post").get("postMsg");
            /* Get Post Author's Name */
            var authorName = obj.get("post").get("postAuthor").get("name");
            /* Get Comment's Message */
            var commentMsg = obj.get("msg");
            /* Get Comment's Author*/
            var commentAuthor = obj.get("user").get("name");

            /* Let's Put the Comment Information in an Array as an Object*/
            commentsArray.push({
                post:{
                    name: postName,
                    msg: postMsg
                },
                author: authorName,
                comment: {
                    author: commentAuthor,
                    msg: commentMsg
                }
            });
        }
    })
编辑(我正在客户机上与Swift一起构建):

var query=newparse.query(“Profile”);
query.equalTo(“objectId”,objectId);
query.find().then(函数(配置文件){
response.success(profile)//返回profile解析对象
},函数(错误){
响应。错误(error);
});
//返回
“{\n}”
define(“getProfiles”,函数(请求、响应){
var query=newparse.query(“Profile”);
查询。包括(“friendId”);
query.find().then(函数(配置文件){
var-res=[];
profiles.forEach(函数(profile){
var obj={
firstName:profile.get(“firstName”),
lastName:profile.get(“lastName”),
年龄:profile.get(“年龄”),
性别:profile.get(“性别”)
};
obj.friend={
firstName:profile.get(“friendId”).get(“firstName”),
lastName:profile.get(“friendId”).get(“lastName”),
};
res.push(obj);
});
答复.成功(res);
},函数(错误){
response.error(“error:+error.code+”“+error.message”);
});
});
//返回
[{
名字:“鲍勃”,
姓:“史密斯”,
年龄:19岁,
性别:男
朋友:{
名字:“蒂姆”,
姓:“王”,
}
},
{
名字:“克里斯”,
姓氏:“scalia”,
年龄:24岁,
性别:男
朋友:{
名字:“本”,
姓:“考尔德”,
}
}]

我更喜欢前者。

调用方返回部分对象(只是一些属性),因为云函数使用它构造的一些属性进行响应。要返回解析对象,请返回解析对象

Parse.Cloud.define("getProfiles", function(request, response) {
    var query = new Parse.Query("Profile");
    query.include("friendId");
    query.find().then(function(profiles) {
      response.success(profiles);
    }, function(error) {
      response.error("Error: " + error.code + " " + error.message);
    });
});
当然,这不需要是云函数,因为它不会向查询添加任何值。客户端可以直接运行查询

还要注意的是,我看到的另一件事,特别是swift作者调用parse时,是一种奇怪的习惯,即进行查询,得到一个PFObjects数组作为响应,然后迭代这些对象,并在本地数组中只存储一些属性。这通常是一个错误,所以,在我看来,你的客户应该是这样的

// no need to call a cloud function that just does a query
var query = PFQuery(className:"Profile")
query.includeKey("friendId")
query.findObjectsInBackgroundWithBlock { (objects: [PFObject]?, error: NSError?) -> Void in
    if error == nil {
        // don't iterate the objects here, saving bits of them in an array
        // have an instance var that is an array of PFObjects
        self.objects = objects;
    } else {
        print("Error: \(error!) \(error!.userInfo)")
    }
}

调用方返回部分对象(只是一些属性),因为云函数使用它构造的一些属性进行响应。要返回解析对象,请返回解析对象

Parse.Cloud.define("getProfiles", function(request, response) {
    var query = new Parse.Query("Profile");
    query.include("friendId");
    query.find().then(function(profiles) {
      response.success(profiles);
    }, function(error) {
      response.error("Error: " + error.code + " " + error.message);
    });
});
当然,这不需要是云函数,因为它不会向查询添加任何值。客户端可以直接运行查询

还要注意的是,我看到的另一件事,特别是swift作者调用parse时,是一种奇怪的习惯,即进行查询,得到一个PFObjects数组作为响应,然后迭代这些对象,并在本地数组中只存储一些属性。这通常是一个错误,所以,在我看来,你的客户应该是这样的

// no need to call a cloud function that just does a query
var query = PFQuery(className:"Profile")
query.includeKey("friendId")
query.findObjectsInBackgroundWithBlock { (objects: [PFObject]?, error: NSError?) -> Void in
    if error == nil {
        // don't iterate the objects here, saving bits of them in an array
        // have an instance var that is an array of PFObjects
        self.objects = objects;
    } else {
        print("Error: \(error!) \(error!.userInfo)")
    }
}

您是否可以添加设置查询的代码,是否可以以某种方式显示结果(如通过日志输出),并解释它们为何不是您期望的结果?获取“JSON而不是对象”的想法对我来说很有趣。JSON是已序列化对象的字符串表示形式。这些是否是解析对象取决于JSON所说的内容在
postName
中为您提供了一个漂亮的字符串,而不是一个错误,那么您的代码就可以工作了。您拥有post对象,不需要另一次获取。@danh-查看我的更新。@danh我更喜欢将解析对象数组返回给客户端(iOS-Swift)。例如:(“{\n}”、“{\n}”、“{\n}”)您能添加设置查询的代码吗?您能以某种方式显示结果(如通过日志输出)并解释它们为什么不是您期望的结果吗?获取“JSON而不是对象”的想法对我来说很有趣。JSON是已序列化对象的字符串表示形式。这些是否是解析对象取决于JSON所说的内容在
postName
中为您提供了一个漂亮的字符串,而不是一个错误,那么您的代码就可以工作了。您拥有post对象,不需要另一次获取。@danh-查看我的更新。@danh我更喜欢将解析对象数组返回给客户端(iOS-Swift)。例:(“{\n}”,“{\n}”,“{\n}”)嘿,嘿,