Request.object在afterSave挂钩中没有数据

时间:2015-12-24 21:10:22

标签: parse-platform

我正在尝试使用Parse中的afterSave钩子。

但是,即使从刚刚保存的对象中删除ID的简单打印也不会显示在日志中,并且if语句不会传递以允许执行其他方法。相关代码:

Parse.Cloud.afterSave(Parse.User, function(request) {
  Parse.Cloud.useMasterKey();
  var user = request.object;
  console.log('After save for user ID: ', user.id);
  if (!user.existed() && user.get('isTrainer')) {
  // does not enter here

打印出来的日志没有ID,只有我输入的字符串。我也尝试打印出请求对象,但是Parse日志系统似乎无法打印出不幸的对象。它也不会输入if语句,因为使用get也不会返回任何信息。

任何人都知道为什么会这样?

为了完整性,这里是对象,因此您可以看到它被正确保存:

v31 after_save triggered for _User for user PlVMz2zCfC:
  Input: {"object":{"createdAt":"2015-12-24T21:01:01.678Z","email":"yui@bb.bb","firstName":"Pppp","isTrainer":true,"lastName":"Pop","objectId":"PlVMz2zCfC","phone":"(555) 555-5555","trainer":{"__type":"Relation","className":"Trainer"},"updatedAt":"2015-12-24T21:01:01.678Z","username":"yui@bb.bb"}}
  Result: Success

1 个答案:

答案 0 :(得分:0)

由于这是User类的afterSave触发器,因此您应该使用request.object代替Parse.Cloud.afterSave(Parse.User, function(request) { Parse.Cloud.useMasterKey(); var user = request.user; console.log("user = " + JSON.stringify(user)); console.log("user.id = " + JSON.stringify(user.id)); console.log("user.existed() = " + JSON.stringify(user.existed())); console.log("user.get("isTrainer") = " + JSON.stringify(user.get("isTrainer"))); if (!user.existed() && user.get("isTrainer")) { ...

我发现在开发过程中将所有内容输出到控制台以帮助调试很有帮助。

  var selectedItem = nonSelectedItems.splice(selectedItemIndex, 1);

  selectedItems.push(selectedItem);

  var allRows = selectedRows.concat(nonSelectedRows);

  myTable.updateRowSort(allRows);