Моя схема является: Таблица 1 Planet [имя: String]
Таблица 2 Город [имя: String, планета: Указатель на запись Planet]
Я хочу, чтобы запросить table1 для всех записей, а затем перебирать эти записи и таблица2 запроса получать все записи, которые принадлежат к этой планете.
Я хочу сохранить карту со всеми городами для каждой планеты и возвратить весь набор.
Я не уверен, что я делаю неправильно, возможно, не используя обещания правильно?
Вот то, что я пытался, но я возвращаю пустой набор каждый раз.
Parse.Cloud.define('getPlanetsAndCities', function( req, res)
{
// Holds planet -> [City]
var data = {};
// Planets
let planetQuery = new Parse.Query(MODEL.Planet.className());
planetQuery.addAscending(name);
// Cities
let cityQuery = new Parse.Query(MODEL.City.className());
cityQuery.addAscending(name);
// Get all planets
var planetPromises = planetQuery.find()
.then(planets =>
{
// For each planet
planetPromises = planets.map(planet =>
{
// Planet name
let planetName = planet.get('name');
console.log(==============================);
console.log(==== Planet: + planetName + ====);
// Get all cities for that planet
cityQuery.equalTo('planet', planet);
var cityPromises = cityQuery.find()
.then(cities =>
{
// For each city
cityPromises = cities.map(city =>
{
// City name
let cityName = city.get('name');
console.log(cityName);
// Initialize list for this planet name
data[planetName] = data[planetName] || [];
// Add city to list for planet
data[planetName].push(cityName);
});
});
}); // End of for each planet
// After all queries finished
Promise.all(planetPromises)
.then(planets =>
{
res.success(data);
});
})
.catch(function (err)
{
res.log.error(Error fetching planet/city data);
});
});