Cameron Sumpter
Cameron Sumpter

Reputation: 454

Parse Cloud Code Queries Return Nothing

I'm attempting to use Cloud Code on Parse to delete pre-existing rows as new rows are added.

This is the current code I've put together:

var queryGoals = new Parse.Query(Parse.Object.extend('Goal'));
queryGoals.include('user');
queryGoals.equalTo('user', request.user);

queryGoals.find({
    success: function(results) {
        console.warn('Query Returned: ' + results.length);
        Parse.Object.destroyAll(results);
    },
    error: function(user, error) {
        console.warn('Error ' + error.code + ': ' + error.message);
    }
});

The console never shows the number of records returned (I assume because none are), nor any errors. The same code (with Parse.User.current() for the user filter, of course) returns the expected number of rows when run client-side.

Do queries operate differently when executed by Cloud Code, or have I overlooked something?

Upvotes: 5

Views: 1638

Answers (1)

Cameron Sumpter
Cameron Sumpter

Reputation: 454

I filed a bug report with Parse and finally ended up finding out that the function was ending before the success function was executed since it was running asynchronously. I added in the proper promise structure to get it working as expected (Additional Details):

queryGoals.find(
{
    useMasterKey: true,
    success: function(results)
    {
        Parse.Object.destroyAll(results);
    },
    error: function(user, error)
    {
        console.warn('Error ' + error.code + ': ' + error.message);
    }
}).then(
    function(object)
    {
        // Do Post-Query Stuff Here
        response.success();
    },
    function(error)
    {
        console.warn('Error ' + error.code + ': ' + error.message);
    }
);

Upvotes: 5

Related Questions