解析平台 - 检索对象中的关系

时间:2016-11-16 18:13:45

标签: javascript parse-platform

好的,所以我对Parse非常熟悉并且在日常开发中使用了大多数功能。但是,现在我需要处理一些多对多关系,并且似乎无法使其正常工作。我曾尝试在Stack上阅读几篇帖子......但没有运气。

任何帮助将不胜感激:

1)' Projects' class =(主分组类和项目详细信息)    a)' projectTasks'设置为关系列并指向Tasks类。

2)'任务' class =(由用户提交并在项目中分组的任务)

3)我希望能够查询某些项目,并同时获取关系数据。

test: function(){
        console.warn("Running relations test....")
        var deferred = $q.defer()
        var Projects = Parse.Object.extend("Projects");
        var query = new Parse.Query(Projects)
        query.equalTo("objectId",Parse.User.current().id)
        query.include("projectTasks")
        query.find({
            success: function(res){
                console.log(res)
                deferred.resolve(res)
            },
            error: function(e,r){
                console.log(e,r)
                deferred.reject(e)
            }
        })

        return deferred.promise
    },

我得到的响应永远不会从关系字段返回实际数据......只是另一个承诺或其他任何承诺。

screen shot of response

也许我只是认为这一切都错了。任何帮助,将不胜感激。我想存储项目,存储任务,并能够将任务关联到项目,并快速检索每个项目的所有信息。

1 个答案:

答案 0 :(得分:0)

你需要做第二次查询来获取关系数据,这是第二次异步调用。

test: function(){
    console.warn("Running relations test....")
    var deferred = $q.defer()
    var Projects = Parse.Object.extend("Projects");
    var query = new Parse.Query(Projects)
    query.equalTo("objectId",Parse.User.current().id)
    query.include("projectTasks")
    query.find({
        success: function(res){ // my code just assumes you get an answer.....
            console.log(res)
            res[0].get('projectTasks').query().find().then(tasks => {
               const response = {parent: res, tasks: tasks};
               deferred.resolve(response);
            }

        },
        error: function(e,r){
            console.log(e,r)
            deferred.reject(e)
        }
    })

    return deferred.promise
},

如果在这个答案的现实生活中,你得到的是一系列结果,那么调用它的客户端代码可能想要处理第二次调用以获取任务,因为它迭代了项目...