2015-10-11 21 views
3

我正在使用旧的解析SDK版本1.5.0和我的函数返回所有包括。 现在我试图使用最新的SDK,并且函数仅返回主对象(在门和位置我只能得到“指针”)。解析云代码新的SDK包括子类不工作

下面是代码:

Parse.Cloud.define("get_gates_for_user", function(request, response) { 
    var userId = request.params.userId; 


var gateToUserQuery = new Parse.Query("GateUserJoinTable"); 
gateToUserQuery.equalTo("user", { 
      __type: "Pointer", 
      className: "_User", 
      objectId: userId 
     }); 


gateToUserQuery.include("gate"); 
gateToUserQuery.include("location"); 

gateToUserQuery.find({ 
    success: function(results) { 
     response.success(results); 
    }, 
    error: function(error) { 
     console.log(error.message); 
     response.error(ERROR_CODE_GENERAL_ERROR); 
    } 
}); 
}); 
+0

也许有关? http://stackoverflow.com/questions/33059768/parse-com-javascript-sdk-using-include-but-not-working – melpomene

+0

是的似乎是相同的问题!此外,我尝试使用JavaScript(在浏览器页面上)的代码,我可以得到所有的子类信息。 –

+0

是的,和我的帖子一样。我不明白为什么。有办法做到这一点,但它出现的字典,不像'List ' –

回答

0

我最近开始使用Parse工作,所以我不是很熟悉的老SDK版本的behavioiur。

既然你在云代码的时候,然而,.include()不保证在.fetch()一个显著的性能增益,因为代码在他们的基础设施上运行(这是访问相关Parse.Object S的记录方式,所以他们应该优化这无论如何),所以下面应该工作:

var _ = require('underscore'); 
var results; 
gateToUserQuery.find().then(function (joins) { 
    // add results to bigger-scoped variable 
    // for access in the other function 
    results = joins; 

    // Promises are beautiful 
    var fetchPromises = _.map(results, function (join) { 
    return Parse.Promise.when([ 
     join.get('gate').fetch(), 
     join.get('location').fetch() 
    ])); 
    }); 
    return Parse.Promise.when(fetchPromises); 
}).then(function() { 
    // related Pointers should be filled with data 
    response.success(results); 
}); 

我觉得至少在SDK的当前迭代,include only works with Arrays代替指针。