javascript - 解析云代码嵌套.each查询

标签 javascript parse-platform

我在 Parse Cloud 中的以下代码被困了几天。我知道我做错了嵌套查询,但尝试了很多,但仍然无法正常工作。

第一个代码可以工作,但分类帐对象尚未创建。

我应该在这里使用 promise 吗? 感谢您的提前帮助。

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);
});

});

最佳答案

是的。您应该使用 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 */ }); 

关于javascript - 解析云代码嵌套.each查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35349592/

相关文章:

ios - 获取 PFObject 的用户名

swift - 使用变量作为 PFQuery 的键来过滤用户。快速查询用户

java - 在javascript中处理java对象

javascript - 在 NativeScript 中显示 PopOver

javascript - Canvas - 在所有完全透明的区域填充一个矩形

mysql - parse.com 后端的开源替代品

ios - 解析使用 Auth0 认证的用户

ios - 返回 nil 的 Facebook iOS SDK 权限列表

javascript - 控制 YouTube 视频播放器中的左/右音频 channel 音量

javascript - 测试函数抛出 UnhandledPromiseRejectionWarning。导致测试不通过