javascript - Firebase存储添加文件引用到firestore

标签 javascript firebase google-cloud-firestore firebase-storage

我正在尝试让表单上传能够将数据上传到我的 Firestore 数据库以及将图像上传到我的 Firebase 存储。

我个人可以同时执行这两项操作,但是除了存储上传图像的确切 URL 之外,我似乎无法弄清楚如何以编程方式将图像引用存储在我的 Firestore 中。

在控制台中,我可以将类型设置为“引用” enter image description here

但是无论我以编程方式尝试什么都不起作用:

发布图片上传:

const url = await storageRef.snapshot.ref.getDownloadURL()
let imageRef = storage.ref().child(`test/${this.imageData.filename}`).ref
// let imageRef = storageRef.snapshot.ref
// let imageRef = storage.ref(`test/${this.imageData.name}`)

const docRef = await testImagesCollection.add({
   thumbnail: imageRef,
   dateCreated: firestore.FieldValue.serverTimestamp()
})

alert("upload succeeded", docRef.id)

我通常会得到:FirebaseError:使用无效数据调用函数 DocumentReference.set()。不支持的字段值:自定义引用对象(在字段缩略图中找到)

如果必须的话,我只会存储 URL,但我宁愿不这样做,如果控制台允许我设置引用,我也应该能够以编程方式执行此操作?!

最佳答案

Firestore 引用类型仅适用于对表示为 DocumentReference 的其他文档的引用对象。它们不适用于对 Cloud Storage 中对象的引用。如果您想要存储对 Cloud Storage 中某个对象的引用,您应该将文件的路径存储在存储桶中(作为字符串,而不是 Reference 对象),或者 download URL (以您更方便的为准)。

如果您有 Reference对象,您可以通过其 fullPath 获取它的字符串路径属性。

关于javascript - Firebase存储添加文件引用到firestore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60665512/

相关文章:

javascript - 当元素溢出时如何增加元素的高度

javascript - 如何减少 Firebase bundle 的大小?

facebook-graph-api - Firebase 的 FacebookAuthProvider.addScope 有何作用?

firebase - 在 firestore 规则中限制子集合中的文档数量

javascript - Firestore 说我在多个属性上有不平等过滤器,而我没有

javascript - 从屏幕外滑动一个 div,然后再打开 toggle

javascript - 将回调函数结果附加到特定的 div/位置?

Firebase Auth 导致 Flutter 应用程序崩溃

firebase - Firestore 安全规则 - 批量读取计数

javascript - 解决异步任务的最佳方法是什么?