Установить предел на ноль в счетчике разбора

Я пытаюсь установить мой счетчик в синтаксический анализ, чтобы он не опускался ниже нуля, когда счет уменьшается, в настоящий момент он может перейти к отрицательным числам. Как я могу установить минимальный предел равным нулю?

Это то, что мне удалось сделать до сих пор:

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 ответ

Облачный код имеет то, что называется 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(), сохранение будет проходить, так как вы проверяете ввод. Поле содержит недопустимые символы или данные, которые вы не ожидали? Выкинь ошибку, чтобы она не сохранялась.

Вы также не должны ничего вкладывать в успех. Это приведет к ошибке.

Эта функция вызывается автоматически, если она существует, и будет вызываться всегда. Вы не можете пропустить это. Даже если вы обновите данные с панели инструментов, это будет вызвано. То же самое с afterSave триггеры, хотя изменение объекта в них ничего не изменит, если вы не сохраните его.

Это должно быть в вашем main.js или в файле, который требуется main.js. У меня есть папка для каждого из моих пользовательских классов. Каждый класс имеет classNameController.js, который содержит функции beforeSave, afterSave, initializer и любые функции облачного кода, относящиеся непосредственно к этому объекту.

Для Main требуется каждый из этих контроллеров, который открывает все конечные точки Parse.Cloud для сервера.

Триггеры beforeSave и afterSave на размещенном Parse.com имели 3-секундный тайм-аут. Я не знаю, есть ли время ожидания для parse-сервера. Я никогда не проверял это. Но не делайте более пары обращений к серверу, чтобы быть в безопасности.

Другие вопросы по тегам