Как избежать несоответствия при добавлении данных в Firestore?

#firebase #google-cloud-firestore

#firebase #google-облако-firestore

Вопрос:

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

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

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

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

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

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

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

Ответ №1:

Вы можете закодировать 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() будет «кодировать компонент Uniform Resource Identifier (URI), заменяя каждый экземпляр определенных символов одной, двумя, тремя или четырьмя управляющими последовательностями, представляющими кодировку символа UTF-8»