在解析计数器中将限制设置为零

时间:2017-06-29 06:28:50

标签: android parse-platform parse-android-sdk

我试图将我的计数器设置为解析,以便在分数递减时不低于零,此时它可以转为负数。如何将最小限制设置为零?

这是我迄今为止所做的事情:

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();
                            }
                        });

1 个答案:

答案 0 :(得分:1)

云代码具有名为beforeSaveafterSave的触发器。 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秒超时。我不知道解析服务器是否有超时。我从未测试过它。但是,不要有几个服务器调用是安全的。