Aftersave Cloud Function for Parse 增加另一个数据表中的值?

Posted

技术标签:

【中文标题】Aftersave Cloud Function for Parse 增加另一个数据表中的值?【英文标题】:Aftersave Cloud Function for Parse that increments value in another data table? 【发布时间】:2015-09-04 19:30:54 【问题描述】:

我无法让我的 aftersave 云函数增加另一个数据表中的值。 Parse 文档在这方面有点混乱。

我有一个名为“CandidateVotes”的表,它为“候选人”的每次投票存储一行 - 当保存新的投票行时,我想增加存储在另一个名为“CategoryCandidates”的表中的总票数" 每个“候选人”都有一行。

所以相关信息:

投票表称为“CandidateVotes” 候选表称为“CategoryCandidates” CategoryCandidates 表中的总票数列称为“votes”

这是我的 Parse aftersave 云函数:

Parse.Cloud.afterSave("CandidateVotes", function(request) 
  query = new Parse.Query("CategoryCandidates");
  query.get(request.object.get("CategoryCandidates").objectID, 
    success: function(candidate) 
      candidate.increment("votes");
      candidate.save();
    ,
    error: function(error) 
      console.error("Got an error" + error.code + " : " + error.message);
    
  );
);

保存新投票时,这是我在云代码日志中遇到的错误:

E2015-09-04T15:49:23.553Z]v9 after_save triggered for CandidateVotes as master:
  Input: "object":"candidateID":"__type":"Pointer","className":"CategoryCandidates","objectId":"HOBbNA690z","createdAt":"2015-09-04T15:49:09.216Z","objectId":"RlmvJjG04t","updatedAt":"2015-09-04T15:49:23.549Z","userID":"__type":"Pointer","className":"_User","objectId":"7YfU2ETvb3"
  Result: TypeError: Cannot read property 'objectID' of undefined
    at main.js:6:53

Parse 文档 (https://parse.com/docs/js/guide#cloud-code-aftersave-triggers) 有一个示例,但我不清楚小写“post”在其数据架构中指的是什么。我也不精通 JS,所以可能会在那里犯一个菜鸟错误。

提前感谢您的任何建议或意见!

【问题讨论】:

【参考方案1】:

调试云代码肯定有点让人头疼,但你已经快到了。您想要访问“CategoryCandidates”类指针的 objectId,您当前正在使用 request.object.get("CategoryCandidates").objectID 来执行此操作。

问题是,当您查看日志以获取 afterSave 的输入时,指针的名称是“candidateID”,而不是“CategoryCandidates”。

尝试使用request.object.get("candidateID").objectID

干杯, 罗素

【讨论】:

非常感谢,罗素。通过该修复,我现在收到此错误:E2015-09-04T21:37:28.049Z]v10 after_save 为用户 7YfU2ETvb3 的 CandidateVotes 触发:输入:"object":"candidateID":"__type":"指针","className":"CategoryCandidates","objectId":"3C5KPJP3fh","createdAt":"2015-09-04T21:37:28.045Z","objectId":"tHSUbMMBiZ","updatedAt":" 2015-09-04T21:37:28.045Z","userID":"__type":"Pointer","className":"_User","objectId":"7YfU2ETvb3" 结果:TypeError:无法读取属性Object.query.get.error (main.js:12:43) 处 null 的“代码”...有什么想法吗? 对于上述评论,我的错误子句中的代码出现了该错误 - 当我删除它时,它就消失了。仍然遇到问题 - 但在这里解决了:***.com/questions/32409920/… - 再次感谢您的帮助!

以上是关于Aftersave Cloud Function for Parse 增加另一个数据表中的值?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 afterSave 函数中获取解析用户

将 afterSave 与 Parse Cloud 代码一起使用

从Parse.com删除特定对象

解析服务器云代码设置ACL

无法在 Parse 中保存自定义类对象

parse.com 云代码无法通过 mandrillapp 发送电子邮件