调用Parse.Cloud.beforeSave()来自自定义Web挂钩

时间:2014-07-15 03:45:31

标签: parse-platform

我开始克隆云代码示例博客应用。在控制器中,我有基本的REST crud操作。我尝试将代码添加到我的控制器,以及直接在main.js中添加:

Parse.Cloud.beforeSave(Parse.User, function(req, res)
{
  for (var dirtyKey in req.object.dirtyKeys()) {
    if (dirtyKey === "username" || dirtyKey === "email") {
      res.error("User is not allowed to modify " + dirtyKey);
      return;
    }
  }
  res.success();
})

在我的终端中,我正在运行parse develop [app]以便在我更改时更新文件。当我添加上面的代码时,它会注册一个触发器。

Deploying recent changes...
Your changes are now live.
I2014-07-15T03:30:18.108Z]Deployed v63 with triggers:
  _User:
    before_save

然而,我仍然可以使用邮递员的其他api来更新用户名和电子邮件字段。

我想,真正的问题应该是,如果我正在构建这样的应用程序;我仍然使用这些之前描述的beforeSave()触发器吗?或者,在方法中简单地进行这些检查(在这种情况下,我创建的User.update方法)并验证那里的所有内容是否更好?因为我似乎无法让触发器实际运行。

1 个答案:

答案 0 :(得分:2)

这个问题是for..in在JavaScript中使用数组的常见错误,在上面的代码dirtyKey中将填充索引,您想要的是:

for (var i in req.object.dirtyKeys()) {
  var dirtyKey = req.object.dirtyKeys()[i];
  if (dirtyKey === "username" || dirtyKey === "email") {
    res.error("User is not allowed to modify " + dirtyKey);
    return;
  }
}