有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

对象包含引用的java Firestore文档

我已经找了一段时间了,但是找不到我需要的东西。 所以我在我的应用程序中使用Firestore,正如您所看到的,我的数据库中有一个包含字符串和引用的对象。 我访问字符串的方式如下:

String descriptionEx1 = (String) exI.get("description");

要访问图像参考,我使用了:

StorageReference gsReference = (StorageReference) exI.get("image");

然后我想我会把图像下载到位图中:

    final long ONE_MEGABYTE = 1024 * 1024;
    storRef.getBytes(ONE_MEGABYTE).addOnSuccessListener(new OnSuccessListener<byte[]>() {
        @Override
        public void onSuccess(byte[] bytes) {
            // Data for "images/island.jpg" is returns, use this as needed
            //ImageView img = (ImageView)findViewById(R.id.imgEx1);
            img = (int) ONE_MEGABYTE;
        }
    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception exception) {
            // Handle any errors
        }
    });

然而,这里我得到一个错误(DocumentReference不能转换为com.google.firebase.storage.StorageReference),因为我试图将DocReference转换为StorageReference。 但我需要它是storageRef将它转换成位图。。。 还有别的办法吗? 附上我的firestore数据库的截图,以说明我想做什么。 谢谢你的帮助

Firestore Database


共 (2) 个答案

  1. # 1 楼答案

    好的,所以我不再尝试使用引用,而是将数据库中的引用转换为一个字符串,并将图像的url作为值。 然后我简单地查询了这个字符串对象,并使用了Glide,它工作得非常好!:) 所以我猜引用不适用于引用存储,但可能仅适用于其他文档

  2. # 2 楼答案

    Firestore不会自动将您拥有的路径转换为StorageReference。相反,您必须自己创建StorageReference,并通过调用^{},使用Firestore中的路径初始化它:

    FirebaseStorage.getInstance().getReferenceFromUrl(exI.get("image"))