Как сделать так что бы нельзя было переводить всю сумму?

Для того чтобы запретить пользователю переводить всю сумму, можно использовать условие или проверку на серверной стороне при обработке запроса на перевод. Возможны несколько подходов к реализации такого ограничения.

Один из вариантов - добавить проверку на сервере перед выполнением операции перевода. Например, можно проверить, что запрошенная сумма не превышает определенное значение (например, 90% от общей суммы пользователя или другое определенное ограничение).

Примерно такой код можно использовать на сервере при обработке запроса:

app.post('/transfer', (req, res) => {
  const transferAmount = req.body.amount; // получаем запрошенную сумму перевода
  const userBalance = // получаем текущий баланс пользователя

  const maxTransferAmount = userBalance * 0.9; // устанавливаем максимальный допустимый перевод (90% от баланса)

  if (transferAmount > maxTransferAmount) {
    res.status(400).json({ errorMessage: 'Запрошенная сумма перевода превышает допустимый лимит' });
    return;
  }

  // продолжаем выполнение операции перевода
});

В этом примере мы получаем запрошенную сумму перевода из запроса (req.body.amount) и текущий баланс пользователя. Затем устанавливаем максимально допустимую сумму перевода (maxTransferAmount) как 90% от баланса пользователя. Если запрошенная сумма перевода превышает этот лимит, мы отправляем клиенту ошибку (400 Bad Request) с соответствующим сообщением об ошибке. В противном случае, мы продолжаем выполнение операции перевода.

При таком подходе важно убедиться, что баланс и максимально допустимая сумма перевода обновляются и синхронизированы при каждом изменении баланса пользователя или при создании новой операции перевода.

Кроме того, следует обратить внимание на безопасность. Необходимо проверять и валидировать входные данные, чтобы исключить возможность атаки посредника (Man-in-the-Middle), подделки запросов и других безопасностных уязвимостей.