2015-10-19 69 views
0

感谢串门。解析CLP/ACL造成的问题与beforeSave触发

我有一个类,姑且称之为Class1的,我用它来给我的应用程序的折扣/优惠券的用户。当用户完成注册过程时,我创建一个对象并将指针存储在用户上。

我想给这个类CLP权限,使公众可以创造,但不能写此对象。让它只是我内部使用的东西。

我的问题是,班里有几个阵列不能未定义或其他云功能最终会引发错误尝试读取这些值。我为这个类设置了一个beforeSave()触发器,并且使用了主键,但是这个对象没有被保存,所以我的整个用户在注册结束时保存不起作用。我如何解决这个问题,同时保持我的对象安全,并确保用户不能免费窃取我的应用程序的所有服务?

这里是我的beforeSave触发:

Parse.Cloud.beforeSave("Class1", function(request, response) 
{ 
    Parse.Cloud.useMasterKey(); 
    var emptyArray = []; 
    class1 = request.object; 
    if(class1.isNew()) 
    { 
     class1.set("array1", emptyArray); 
     class1.set("array2", emptyArray); 
     class1.set("array3", emptyArray); 
    } 
    response.success(); 
}); 
+0

您是否看到正在日志中创建的对象数据?任何错误消息? –

+0

你能完全摆脱阵列吗?而不是有一个存储在用户内的优惠券指针数组,只是有一个用户指针与每个优惠券相关联。作为一般的经验法则,我发现最好尽可能减少用户类 – Russell

回答

0

所以我猜你不能使用万能钥匙覆盖CLP/ACL的东西在beforeSave触发...虽然这是有道理的,因为这将完全击败了这一点。

但是,如果你给公众创建访问,可以填充任何初始数据,你就不能没有更新访问更新。所以,显而易见的答案是在创建对象之前和保存之前在客户端设置这些参数。