Как избежать несогласованности при добавлении данных в Firestore? - PullRequest
0 голосов
/ 06 апреля 2019

Мы создаем приложение, в котором мы хотим отображать города.В каждом городе также есть изображение, которое хранится в Firebase Storage.Мы добавляем данные в БД либо с помощью консоли Firebase, либо программно.Проблема возникает, когда мы добавляем данные, которые содержат специальные символы, например, у меня есть этот URL:

https://firebasestorage.googleapis.com ... München.png

Вот как это выглядит в браузере.Если мы добавим этот URL с помощью консоли Firebase, он будет сохранен так же, как указано выше, однако, когда мы сделаем это программно, этот URL будет сохранен:

https://firebasestorage.googleapis.com ... M%C3%BCnchen.png

Итак, следующий запрос:

db.collection("cities")
    .whereEqualTo(
        "cityPictureUrl",
        "https://firebasestorage.googleapis.com ... München.png"
    );

Не будет работать, поскольку имя в базе данных - M%C3%BCnchen, а не München.Как правильно хранить данные, чтобы избежать несоответствия?

1 Ответ

1 голос
/ 06 апреля 2019

Вы можете закодировать URI перед запросом следующим образом:

String imageURI = "https://firebasestorage.googleapis.com ... München.png";
String imageURIEncoded = URLEncoder.encode(imageURI, "utf-8");  

db.collection("cities")
    .whereEqualTo(
        "cityPictureUrl",
        imageURIEncoded
    );

URLEncoder.encode() будет «кодировать компонент универсального идентификатора ресурса (URI) путем замены каждого экземпляра определенных символов одной, двумя, тремя или четырьмя escape-последовательностями, представляющими кодировку символа UTF-8»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...