Каков наилучший способ загрузки изображений нескольких пользователей в коллекцию пожарных? используя Angular / Ionic 4 - PullRequest
1 голос
/ 07 октября 2019

Я создаю графическое приложение для блогов в 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"
}

1 Ответ

0 голосов
/ 15 октября 2019

Тем не менее, это хорошая структура для извлечения изображений?

Кредиты этот ответ для информации ниже:

«Вы должны знать, что не существует« идеального »,« лучшего »или« правильного »решения для структурирования базы данных Cloud Firestore. Лучшее и правильное решение - это решение, которое соответствует вашим потребностям и облегчает вашу работу. Имейте также в виду, что в мире баз данных NoSQL также не существует единой «правильной структуры данных». Все данные смоделированы с учетом сценариев использования, необходимых для вашего приложения. Это означает, что того, что работает для одного приложения, может быть недостаточнодругое приложение. Таким образом, нет единого правильного решения для всех. Эффективная структура базы данных типа NoSQL полностью зависит от того, как вы собираетесь ее запрашивать. "

Исходя из вышеизложенного, я бы порекомендовал выбрать Коллекции корневого уровня как структура.

Проведя небольшое исследование, я обнаружил несколько интересных сервисов, таких как Облачное хранилище Firebase .

Дополнительную информацию об использовании облачного хранилища Firebase с Angular можно найти здесь .

В случае, если вам интересно, у этого парня также есть несколько интересных уроков и статей, касающихся Ionic с использованием Angular

Дайте мне знать, если это полезно.

...