#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»