Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 204
Cameron Sumpter Avatar asked Aug 06 '14 19:08

Cameron Sumpter


1 Answers

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);
    }
);
like image 179
Cameron Sumpter Avatar answered Oct 14 '22 06:10

Cameron Sumpter