我试图将我的计数器设置为解析,以便在分数递减时不低于零,此时它可以转为负数。如何将最小限制设置为零?
这是我迄今为止所做的事情:
btnPointTeamD.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
object.increment("team_d_score");
object.saveInBackground();
}
});
btnMinusTeamC.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
object.increment("team_c_score", -1);
object.saveInBackground();
}
});
答案 0 :(得分:1)
云代码具有名为beforeSave
和afterSave
的触发器。 beforeSave
就是你需要的。
beforeSave触发器包含所有新数据(注意:没有旧数据),您可以检查object.dirty("key");
以查看该字段是否已更改。您也不必对此特定情况进行任何检查。
Parse.Cloud.beforeSave("ClassName", function(request, response) {
var object = request.params.object;
if( object.get("team_c_score") < 0 ) object.set("team_c_score", 0);
response.success();
});
一些注意事项:如果您返回response.error()
,则 note 将保存,因此您将验证输入。字段包含非法字符或您不期望的数据?抛出一个错误,这样它就不会被保存。
你也不应该在成功回应中加入任何内容。这将导致错误。
如果该函数存在,则会自动调用该函数,并且始终将被调用。你不能跳过它。即使您从仪表板更新数据,也会调用此数据。与afterSave
触发器相同,但修改其中的对象除非保存,否则不会执行任何操作。
这应该放在你的main.js或main.js所需的文件中。我有一个每个自定义类的文件夹。每个类都有一个classNameController.js
,其中包含beforeSave,afterSave,初始化程序以及与该对象直接相关的任何云代码函数。
Main需要每个控制器,它们将所有Parse.Cloud端点打开到服务器。
托管Parse.com上的beforeSave和afterSave触发器有3秒超时。我不知道解析服务器是否有超时。我从未测试过它。但是,不要有几个服务器调用是安全的。