Firebase storage добавить ссылку на файл в firestore - PullRequest
0 голосов
/ 13 марта 2020

Я пытаюсь загрузить форму для загрузки данных в мою базу данных Firestore, а также выгрузить изображение в хранилище Firebase.

По отдельности я могу выполнять и то и другое, однако за исключением хранения точного URL-адреса загруженное изображение, которое я не могу понять, как программно хранить ссылку на изображение в моем firestore.

В консоли я могу установить тип "Reference" 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: Function DocumentReference.set() called with invalid data. Unsupported field value: a custom Reference object (found in field thumbnail)

Если мне нужно, я просто сохраню URL, но я не буду этого делать, если консоль позволит мне установить ссылку, я также смогу делать это программно?!

1 Ответ

2 голосов
/ 13 марта 2020

Типы ссылок Firestore работают только со ссылками на другие документы, представленные как DocumentReference объекты. Они не работают со ссылками на объекты в облачном хранилище. Если вы хотите сохранить ссылку на объект в облачном хранилище, вы должны либо сохранить путь к файлу в корзине (как строку, а не как Reference объект), либо загрузить URL (в зависимости от того, что вам удобнее).

Если у вас есть объект Reference , вы можете получить строковый путь к нему с помощью свойства fullPath .

...