使用Parse Cloud Code来强制数据完整性

时间:2014-02-17 16:30:20

标签: parse-platform

我正在尝试在云代码创建的Parse Cloud Code(事务授权代码)中创建一个字段,用户(或除Admin之外的任何人)都无法更改。文件表明这是可能的。我真的可以使用一些关于如何实现这样一个领域的指针。解析下面的参考文献。

Data Integrity in Cloud Code

  • 不允许用户直接更改计算字段

1 个答案:

答案 0 :(得分:3)

Parse.com博客中描述了您想要的内容,该博客是关于dirtyKeys

的条目

以下是他们样本的副本:

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

在您的情况下,您希望对用户进行额外检查,以确定他们是否处于管理员角色。

根据this documentation,您可能还想检查是否使用了主密钥。

供参考,以下是完整查询的外观:

Parse.Cloud.beforeSave("mySecureObject", function(request, response) {
  var isAdminQuery = (new Parse.Query(Parse.Role));
  isAdminQuery.equalTo("name", "Administrator");
  isAdminQuery.equalTo("users", request.user);
  isAdminQuery.first().then(function(adminRole) {
    if (adminRole || request.master) {
      // admin user or master key set, let 'em do what they want
    } else {
      for (dirtyKey in request.object.dirtyKeys()) {
        if (dirtyKey === "firstCalculatedField" || dirtyKey === "otherCalculatedField") {
          response.error("User is not allowed to modify " + dirtyKey);
          return;
        }
      }
    }
    response.success();
  }); // end isAdminQuery.first()
}); // end beforeSave