2015-10-11 2 views
3

Я использовал старый вариант SDK версии 1.5.0, и моя функция возвращалась со всеми включенными. Теперь я попытался использовать последний SDK, и функция возвращает только основной объект (на воротах и ​​в местоположении я получаю только «указатели»).Parse cloud code new 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

Да, то же самое, что и мой пост. Я не понимаю, почему. Есть способ сделать это, но он выходит как словарь, а не как «Список ' –

ответ

0

Я начал работать с Parse недавно, так что я не очень хорошо знаком с behavioiur старых версий SDK.

Поскольку вы находитесь в облаке кодекса, однако, .include() не гарантирует значительный прирост производительности по сравнению с .fetch(), так как код работает на своей инфраструктуре (это документировано способ доступа связанных Parse.Object с, поэтому они должны быть для оптимизации что в любом случае), так что должно работать:

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 вместо указателей.