【问题标题】:How to avoid inconsistency when adding data to Firestore?向 Firestore 添加数据时如何避免不一致?
【发布时间】:2019-04-06 06:50:52
【问题描述】:

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

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

这就是它在浏览器中的样子。如果我们使用 Firebase 控制台添加此 url,它将像上面一样保存,但是,当我们以编程方式执行此操作时,该 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,因此无法使用。如何以最正确的方式存储数据以避免不一致?

【问题讨论】:

    标签: firebase google-cloud-firestore


    【解决方案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() 将“通过将特定字符的每个实例替换为表示字符的 UTF-8 编码的一个、两个、三个或四个转义序列来编码统一资源标识符 (URI) 组件”

    【讨论】:

      猜你喜欢
      • 2020-01-10
      • 1970-01-01
      • 2012-08-07
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-29
      • 1970-01-01
      • 2014-06-10
      相关资源
      最近更新 更多