2016-02-11 3 views
0

tI'm несколько дней застрял с моим следующим кодом в Parse Cloud. Я знаю, что делаю вложенный запрос неправильно, но много пробовал и до сих пор не работает.Parse cloud code inested .each query

Первый код работает, но объект книги не создается.

Должен ли я использовать обещания здесь? Благодарим за помощь в продвижении.

Parse.Cloud.job("PayTax", function(request, status) { 

var promises = []; // promises array 
Parse.Cloud.useMasterKey(); 
var query = new Parse.Query(Parse.User); 
query.each(function(user) { 
     // Set and save the change 
    var balance = user.get("balance"); 
    var stamount = user.get("streets"); 
    var level = user.get("level"); 
    var tax = 5 * level * stamount; 
    var newbalance = balance - tax; 

    user.set("balance", newbalance); 
    user.save(); 
    console.log("User tax payed " + tax + " " + user.get("username") + "ID: " + user.id); 

     //update ledger // 2nd query 
     var Ledger = Parse.Object.extend("Ledger"); 
     var ledger = new Ledger(); 

     var userPointer = new Parse.Object("_User"); 
     userPointer.id = user.id; 

     ledger.set("type", "tax"); 
     ledger.set("amount", tax); 
     ledger.set("user", user); 
     ledger.set("description", "Tax payed"); 
     ledger.set("xp", 0); 
     console.log("Tax added to Ledger " + tax + user.get("username") + "ID: " + user.id); 
     promises.push(ledger.save()); 

});Parse.Promise.when(promises).then(function() { 
     // Set the job's sucess status 
     status.success("Update balance completed successfully."); 

}, function(error) { 
    // Set the job's error status 
     status.error("Uh oh, something went wrong." + error); 
}); 

});

ответ

1

Да. Вы должны использовать Promises для обеспечения сохранения всех пользователей в цикле перед возвратом. Что-то вроде этого:

var promises = []; // promises array 
promises.push(ledger.save()); // push every save in an array 
// Then wait for all of them to finish in parallel 
Parse.Promise.when(promises).then(function() { /* all saves done */ }); 
+0

Hi Mo Nazemi, спасибо за вашу помощь. Мне все еще не удалось заставить его работать. Я обновил свой код, что я делаю неправильно? – Lengo

+0

Функция query.each должна заканчиваться, прежде чем ждать этих обещаний. –

+0

Спасибо, думаю, что он работает. – Lengo