Короче говоря, я хотел бы получить значимые ошибки проверки из firebase / firestore при выполнении транзакции в приложении, при изменении псевдонима пользователя.
Я изо всех сил пытаюсь найти хороший подход.Позвольте мне объяснить на этом простом примере:
TextInput "псевдоним" для страницы профиля пользователя в React Native.Пользователь может изменить значение «псевдоним» и нажать «Сохранить».Если в строке псевдонима что-то не так, пользователю показываются значимые ошибки / обратная связь, например: слишком короткое / длинное имя.Ник содержит плохие слова.Псевдоним уже используется.
Я уже сделал это с помощью облачных функций и вызова https из приложения при нажатии кнопки Сохранить.Это позволяет мне показывать пользователю любые ошибки проверки ввода, так как это правильный запрос к серверу, где я могу выдать ошибку, которая может быть показана непосредственно пользователю.Но это кажется ... неуклюжим?
Проверка на сервере самого псевдонима проверяет длину> 4 && length <20, а также проверку уникальности имени пользователя, плюс некоторые проверки на плохие слова.Уникальность достигается благодаря наличию коллекции Firestore с уже используемыми никами. </p>
Неужели нет более простого способа сделать это?Является ли описанный выше лучший подход?
Было бы легко, если бы я как-то мог выбросить ошибку в правилах firestore и перехватить ее на стороне клиента, а затем показать ее пользователю - тогда я мог бы провести всю свою проверку срегулярные выражения и т.д. только в правилах пожарного магазина.Но все, что я видел, это разрешать и запрещать - это основано исключительно на доступе, поэтому в результате пользователь получает разрешение «отказано», если я пытаюсь выполнить какую-либо проверку.Поэтому я должен выполнить правила в firestore (для безопасности) и написать проверку на стороне клиента, чтобы показать значимые ошибки пользователю (т.е. клиент не отправляет данные, если они не действительны).Без проверки на стороне клиента он просто выдавал бы ошибки «отказано в разрешении» при попытке непосредственного обновления с помощью firebase.firestore.doc ('users / blahblah'). Update ({nickname: new_value}).
Это, конечно, выполнимо, но не так гибко, как просто проверка сервера и выдача сообщений об ошибках - экономит много времени на ввод текста - и не требует обновления приложения, если позже мне нужно добавить больше правил проверки - можно просто сделать этона сервере.
Я просто чувствую, что было бы более элегантно выполнить простую транзакцию в приложении с помощью функций firebase.firestore и иметь возможность ловить ошибки.
У меня такое чувство, что явозможно, что-то упустил, но я провел два дня, обыскивая Google, читая все документы по firebase + firestore и по документам реагировать-native-firebase + примеры.Поэтому я надеюсь, что кто-то здесь находился в подобной ситуации с несколькими минутами, чтобы сэкономить немного мудрости:)
Ура!