将数据添加到Firestore时如何避免不一致?

问题描述 投票:0回答:1

我们正在构建一个我们想要显示城市的应用程序。每个城市还有一个存储在Firebase存储中的图像。我们使用Firebase控制台或以编程方式向数据库添加数据。当我们添加包含特殊字符的数据时,问题就出现了,例如,我有这个网址:

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

这就是它在浏览器中的样子。如果我们使用Firebase控制台添加此网址,它将保存与上面相同,但是,当我们以编程方式执行此操作时,该网址会被保存:

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,因此不起作用。如何以最正确的方式存储数据以避免不一致?

firebase google-cloud-firestore
1个回答
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()将“编码统一资源标识符(URI)组件,方法是将某些字符的每个实例替换为表示字符的UTF-8编码的一个,两个,三个或四个转义序列”

© www.soinside.com 2019 - 2024. All rights reserved.