【问题标题】:Parse.com trying to update user afterSave CloudCodeParse.com 尝试在保存 CloudCode 后更新用户
【发布时间】:2016-08-13 02:33:17
【问题描述】:

在将某些内容保存/更新到我的 Transactions 对象后,我正在尝试使用 afterSave 函数来更新 User 对象上名为 accountBallance 的字段:

Parse.Cloud.afterSave("Transactions", function(request) {
  var amount = request.object.get("amount");
  var userId = request.object.get("user").id;
  console.log("Amount: " + amount);
  console.log("User: " + userId);


  Parse.Cloud.useMasterKey();
   var user = new Parse.User();
   var query = new Parse.Query(Parse.User);
   query.equalTo("objectId", userId);
   query.first({
      success: function(myObject) {
         var newBallance =  myObject.get("accountBallance") + amount;

         myObject.set("accountBallance", newBallance);
         myObject.save();

         // Set the job's success status
        response.success("User: " + userID + " Balance was updated with: " + amount);

      },
      error: function() {
         // Set the job's success status
        response.error("Couldn't update transaction!");
      }
   });


});

我收到以下错误:

结果:TypeError:无法调用未定义的方法“get” 在 query.first.success (main.js:22:38) 在 Parse.js:2:5786 在 r (Parse.js:2:4981) 在 Parse.js:2:4531 在 Array.forEach (本机) 在 Object.w.each.w.forEach [as _arrayEach] (Parse.js:1:666) 在 n.extend.resolve (Parse.js:2:4482) 在 r (Parse.js:2:5117) 在 Parse.js:2:4531 在 Array.forEach(本机)

任何建议/帮助将不胜感激。

【问题讨论】:

  • 您应该检查 request.object.get("user") 是否为空。您可能试图访问空用户对象的 id 字段。
  • 您好,感谢您的输入,但它不为空。在我开始时: var userId = request.object.get("user").id;和日志:console.log("用户:" + userId);我得到一个有效的用户 ID。我什至尝试用有效的 objectId 为用户明确替换它。
  • 应该说user字段的值是指向Parse_User表的指针。
  • 您是否尝试将 request.object.get("user") 直接设置为 userId 变量?如果你还没有尝试,试试这个。此外,您可以将 request.object 打印到控制台以查看其中的内容,在最坏的情况下,您可以对 Transactions 进行另一个查询以获取行和所需数据。
  • request.user.id 为我工作。请参考parse.com/docs/js/api/symbols/Parse.Cloud.AfterSaveRequest.html

标签: javascript parse-platform


【解决方案1】:

您的查询 (myObject) 返回的值似乎为空。您应该为此添加检查:

if(myObject){
    // We are good!
}else{
    // user not found...maybe it was deleted?
}

你确定这里打印的objectId吗

console.log("User: " + userId);

在你的用户表中吗?

【讨论】:

    猜你喜欢
    • 2014-11-17
    • 2014-09-13
    • 1970-01-01
    • 2021-02-24
    • 2014-09-06
    • 2015-02-26
    • 1970-01-01
    • 2016-01-12
    • 2016-03-25
    相关资源
    最近更新 更多