parse.com - Parse : Multiple queries with an array returning only when finished -
trying cloudcode out first time , loving it.
i writing ios app passes phone numbers cloudcode see if phone number has app.
the problem firing success block before queries finish. guessing need know how many queries there , work out if on last one? seen .then function?
parse.cloud.define("processnumbers", function(request, response) { parse.cloud.usemasterkey(); var phonenumbers = request.params.phonenumbers; phonenumbers.foreach(function(entry) { var query = new parse.query(parse.user); //query.equalto("username", entry); query.find({ success: function(results) { console.log("has app"); }, error: function() { console.log("not found"); } }); console.log(entry); }); response.success(phonenumbers); });
you use promise
perform task in series or parallel.
ref. promises in parallel, promises in series
the following parallel version use parse.promise.when
. promise when
resolved when of input promises resolved.
parse.cloud.define("processnumbers", function(request, response) { parse.cloud.usemasterkey(); var phonenumbers = request.params.phonenumbers; var promises = []; phonenumbers.foreach(function(entry) { var query = new parse.query(parse.user); //query.equalto("username", entry); promise.push( query.find().then(function(results) { console.log("has app"); }, function() { console.log("not found"); }); ) console.log(entry); }); return parse.promise .when(promises) .then(function() { response.success(phonenumbers); }); response.success(phonenumbers); });
p.s. not tested yet, use @ own risk
Comments
Post a Comment