javascript - 解析云代码不响应错误或 promise 成功

标签 javascript parse-platform promise parse-cloud-code

我的 Parse 云代码未响应错误或成功。它只是超时,我不知道我做错了什么。它应该在不同的表中保存多个值,并向用户发送推送消息。

推送消息和用户表已调整并发送,但街道和分类帐对象未正确保存。也没有调用响应。

我过去确实工作过(或者我只是运气好)。有没有想过我做错了什么?

  var buyerId = request.params.buyerid;
  var sellerName = request.params.sellername;
  var streetId = request.params.streetid;
  var amount = request.params.amount;
  var pushMessageTemplate = request.params.pushMessage;

  var log = request ? request.log : console;
  var Streets = Parse.Object.extend('SHStreets');
  var streetQuery = new Parse.Query(Streets);
  streetQuery.equalTo("objectId", streetId);
  streetQuery.first({
    useMasterKey: true,
    success: function (street) {
      var streetName = street.get("name");

      var query = new Parse.Query(Parse.User);
      query.equalTo("objectId", buyerId);
      query.first({
        useMasterKey: true,
        success: function (user) {
          var promises = [];
          var now = new Date();

          var buyerName = user.get("username");
          // Set and save the change
          user.set("balance", user.get("balance") - amount);
          user.set("streets", user.get("streets") + 1);

          street.set("current_owner", user);
          street.set("owned_since", now);
          street.set("for_sale", false);
          street.set("price_bought", amount);

          var acl = new Parse.ACL();
          acl.setPublicReadAccess(true);
          acl.setWriteAccess(user, true);
          street.setACL(acl);

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

          ledger.set("type", "buy");
          ledger.set("amount", amount);
          ledger.set('ledger_time', now);
          ledger.set("user", user);
          ledger.set("description", "x");

          promises.push(Parse.Object.saveAll([street, user, ledger], { useMasterKey: true }));

          // Find users with a given email
          var userQuery = new Parse.Query(Parse.User);
          userQuery.equalTo("objectId", user.id);

          var pushQuery = new Parse.Query(Parse.Installation);
          pushQuery.exists("user"); // filter out installations without users
          pushQuery.include('user'); // expand the user pointer
          pushQuery.matchesQuery("user", userQuery);

          // Send push notification to query
          promises.push(Parse.Push.send({
            where: pushQuery, // Set our installation query
            data: {
              alert: _.template(pushMessageTemplate)({
                sellername: sellerName,
                streetname: streetName,
                amount: amount
              })
            }
          }, {
              useMasterKey: true,
          }));

          return Parse.Promise.when(promises).then(function () {
            response.success("success");
          });
        },
        error: function (error) {
          log.error('buy-street error', error.message);
          response.error("Uh oh, buy request success failed." + error.message);
        }
      });
    },
    error: function (error) {
      log.error('buy-street error', error.message);
      response.error("Uh oh, buy request success failed." + error.message);
    }
  });

最佳答案

看起来您的第一个查询的成功函数没有返回任何内容:

streetQuery.first({
useMasterKey: true,
success: function (street) { // this function doesn't return anything
  // ...
  query.first({  // You probably want to return this promise
    useMasterKey: true,
    success: function (user) { // this is the function that you're returning to
      // ...
      return Parse.Promise.when(promises).then(function () {
        response.success("success");
      });
    },
  });
}

});

如果您没有返回语句,Javascript 将默认返回 undefined

关于javascript - 解析云代码不响应错误或 promise 成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45394004/

相关文章:

javascript - 从文件夹加载图像时 Ajax 调用抛出 404

ios - 如何在解析中使用手机号码登录,但用户应该通过短信或调用该号码获取验证码?

c# - 使用 Parse 向 Android 设备发送推送通知

javascript - 用 webpack 去掉 __DEV__

javascript - FireFox 与 Webkit/IE 不同的 onchange 行为

javascript - Node 中的请求 promise 未按预期工作

javascript - Angular JS 中的 Promise 对象未呈现错误

javascript - 为什么这个 promise 链没有按顺序返回?

javascript - 如何使用 C# 从网站读取字符串

ios - 将 PFQuery 解析为数组 objective-c