【发布时间】: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