udjat
udjat

Reputation: 477

How can I retrieve a list of objects from a class relation?

I have a class Store that has a relation itemsInStore that contains multiple Item objects on Parse. I'm currently trying to Parse Cloud Code to retrieve all Items in a Store, but don't know what a common practice for this is.

In particular, I couldn't find articles that really answer my question here, e.g. how the query should be.

Parse.Cloud.define("retrieveNearbyLocationsAndItemsWithCurrentLocation", function(request, response) {
    var Store = Parse.Object.extend("Store");
    var store = new Store();
    var query = new Parse.Query(Store);
    var userGeoPoint = new Parse.GeoPoint(request.params.lat, request.params.long);

    query.near("geopoint", userGeoPoint);
    query.limit(1);

    query.find({
        success: function(httpResponse) {
            response.success(httpResponse[0].get("itemsInStore"));
            console.log(httpResponse[0].get("itemsInStore"));

        },
        error: function(httpResponse) {
            response.error("Error: retrieveNearbyLocationsAndItemsWithCurrentLocation");
        }


    });


});

Console log would return {"__type":"Relation","className":"Item"}

In order to dig into this Relation and retrieve all Item objects in it, what should be done next?

Upvotes: 2

Views: 189

Answers (1)

danh
danh

Reputation: 62676

The relation answers a query. Run that query to get the related elements.

Parse.Cloud.define("retrieveNearbyLocationsAndItemsWithCurrentLocation", function(request, response) {
    var Store = Parse.Object.extend("Store");
    var store = new Store();
    var query = new Parse.Query(Store);
    var userGeoPoint = new Parse.GeoPoint(request.params.lat, request.params.long);
    query.near("geopoint", userGeoPoint);
    query.limit(1);

    query.find().then(function(stores) {
        if (stores.length && stores[0].relation("itemsInStore")) {
            var itemQuery = stores[0].relation("itemsInStore").query();
            return itemQuery.find();
        } else {
            return [];
        }
    }).then(function(items) {
        response.success(items);
    }, function(error) {
        response.error(error);
    });
});

Upvotes: 1

Related Questions