从Parse中的第二级指针获取数据

时间:2015-08-03 19:33:20

标签: javascript pointers parse-platform

我有三个相关类的设置:_User,Article和Profile。在TestFragment中,Article有一个名为author的指针,而在_User,我有相同的指针; Profile的指针,但名为user

现在,我想从_User中检索数据Articlefirstname中的lastname Profile,其中Article中的指针与objectId匹配{1}}中的{1}}和_User中的指针。

基本上我会用SQL中的内连接来解决。

如何通过一次解析来解决这个问题?

这是我到目前为止所做的:

Profile

1 个答案:

答案 0 :(得分:2)

很高兴回答OP的问题,其中包括对数据的完整(和最小)描述以及期望的结果。

我想我明白你想要获得文章,并且每个你想获得个人资料,并且通过一个指向用户的公共指针(逻辑上)加入个人资料和文章。

这可以使用每篇文章的附加查询来完成。为了清晰和可维护性,我喜欢将这些内容分解为简短的逻辑承诺返回函数,所以......

// for handy array functions, like _.map, and turning var args into simple arrays
var _ = require('underscore');
// note: include underscore this way in cloud code (nodejs)
// for browser, see underscorejs.org to add to your project

// this will answer a promise that is fulfilled with an array of the form:
// [ { article:article_object, profile:profile_object }, {...}, ...]
function articlesWithProfiles() {
    var query = new Parse.Query("Article");
    query.include("category");
    query.include("author");
    return query.find().then(function(articles) {
        var promises = _.map(articles, function(article) {
            return profileForArticle(article);
        });
        return Parse.Promise.when(promises);
    });
}

// return a promise that's fulfilled by associating the given article with it's profile
function profileForArticle(article) {   
    var author = article.get("author");
    var query = new Parse.Query("Profile");
    query.equalTo("user", author);
    return query.first().then(function(profile) {
        return { article:article, profile:profile };
    });
}

// call it like this
articlesWithProfiles().then(function() {
    // see edit below
    var result = _.toArray(arguments);
    console.log(JSON.stringify(result));
}, function(error) {
    // handle error
    console.log(JSON.stringify(error));
});