包含引用的对象的Firestore文档

时间:2018-01-22 17:43:59

标签: java android firebase-storage google-cloud-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 个答案:

答案 0 :(得分:0)

Firestore不会自动将您拥有的路径转换为StorageReference。相反,您必须自己创建StorageReference并使用Firestore中的路径通过调用FirebaseStorage.getReferenceFromUrl(...)对其进行初始化:

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

答案 1 :(得分:0)

好的,所以我离开了尝试使用引用并将我的数据库中的Reference转换为一个字符串,其中url是图像的值。 然后我只是查询了这个字符串对象并使用了Glide,它完美无缺! :) 所以我猜参考不能用于引用存储,但可能仅用于其他文档?