Установить предел на ноль в счетчике разбора
Я пытаюсь установить мой счетчик в синтаксический анализ, чтобы он не опускался ниже нуля, когда счет уменьшается, в настоящий момент он может перейти к отрицательным числам. Как я могу установить минимальный предел равным нулю?
Это то, что мне удалось сделать до сих пор:
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-сервера. Я никогда не проверял это. Но не делайте более пары обращений к серверу, чтобы быть в безопасности.