我使用的是旧的解析SDK版本1.5.0,我的函数返回了所有包含的内容。现在我尝试使用最新的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);
}
});
});
我最近才开始使用Parse,所以我对旧SDK版本的行为不是很熟悉。
由于您在云代码中,然而,.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
只适用于数组而不是指针。