Я создаю графическое приложение для блогов в Ionic 4. Мой вариант использования позволяет пользователю загружать несколько файлов изображений в одну и ту же запись блога. Код, который у меня уже есть, позволяет загружать одно изображение в коллекцию за раз. В настоящее время, когда пользователь загружает изображение, оно сохраняется в базе данных Firebase, а затем изображение указывается в документе Firestore пользователя.
Файл машинописного текста для выбора изображения
openImagePicker(){
this.imagePicker.hasReadPermission()
.then((result) => {
if(result == false){
// no callbacks required as this opens a popup which returns async
this.imagePicker.requestReadPermission();
}
else if(result == true){
this.imagePicker.getPictures({
maximumImagesCount: 10
}).then(
(results) => {
for (var i = 0; i < results.length; i++) {
this.uploadImageToFirebase(results[i]);
}
}, (err) => console.log(err)
);
}
}, (err) => {
console.log(err);
});
}
Файл службы
createTask(value){
return new Promise<any>((resolve, reject) => {
let currentUser = firebase.auth().currentUser;
this.afs.collection('tasks')
.add({
category: value.category,
title: value.title,
description: value.description,
image: value.image,
uid: currentUser.uid
})
.then(
res => resolve(res),
err => reject(err)
)
})
uploadImage(imageURI, randomId){
return new Promise<any>((resolve, reject) => {
let storageRef = firebase.storage().ref();
let imageRef = storageRef.child('image').child(randomId);
this.encodeImageUri(imageURI, function(image64){
imageRef.putString(image64, 'data_url')
.then(snapshot => {
snapshot.ref.getDownloadURL()
.then(res => resolve(res))
}, err => {
reject(err);
})
})
})
}
Я пытаюсь выяснить, какой способ хранения нескольких файлов изображений является наилучшимв пожарный, так что я могу легко получить изображения. Я думал, что было бы возможно сохранить изображения в виде карты или массива в документе пожарного депо, как это. Однако, это хорошая структура для извлечения изображений?
tasks -> tasksID ->
{
category:
"Art"
description:
"This is a description"
image:
0
"https://firebasestorage.googleapis.com/v0/b/wippy-1962c.appspot.com/o/image%2F6cu63?
alt=media&token=2eab2208-9399-4cf7-89d8-f709d93c4ufn"
1
"https://firebasestorage.googleapis.com/v0/b/wippy-1962c.appspot.com/o/image%2Fshook.png?
alt=media&token=ebed3a28-b2ed-423a-a19d-f5849134045e"
2
"https://firebasestorage.googleapis.com/v0/b/wippy-1962c.appspot.com/o/image%2Fpatrick.png?
alt=media&token=33062fb2-a3dc-4077-9390-cbeb60a654a0"
}