Как мне настроить правила Firebase Firestore для моего личного веб-сайта портфолио? - PullRequest
1 голос
/ 05 августа 2020

Это может быть вопрос для новичков, но как мне настроить свои правила?

Я создал веб-сайт, который считывает данные из хранилища огня, и мне нужно, чтобы данные были прочитаны кем угодно, но могут быть только отредактированный мной. Это пример кода, который я пробовал:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    // Allow public read access, but only content owners can write
    match /some_collection/{document} {
      allow read: if true
      allow create: if request.auth.uid == request.resource.data.author_uid;
      allow update, delete: if request.auth.uid == resource.data.author_uid;
    }
  }
}

, а также:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    // Allow only authenticated content owners access
    match /some_collection/{userId}/{documents=**} {
        allow read: if true;
      allow write: if request.auth != null && request.auth.uid == userId
    }
  }
}

Для обоих из них мой веб-сайт не смог получить данные из базы данных.

Изменить: чтобы показать запрос, который не работает. Я использовал для этого vueJS:

mounted() {
      const db = this.$firebase.firestore();
      let storage = this.$firebase.storage();
      let storageRef = storage.ref().child('images');
      db
        .collection('projects')
        .onSnapshot(snap => {
          const info = [];
          snap.forEach(doc => {
            let data = doc.data();
            let imgName = data.img
            storageRef.child(imgName)
            .getDownloadURL().then((url) => {
              data.img = url
              // console.log(data.img)
            }).catch((error) => {
              // Handle any errors
              console.log(error)
            });
            data.index = doc.id;
            info.push(data);
          });
          this.info = info;
        });
    },

1 Ответ

1 голос
/ 06 августа 2020

Здесь ваш запрос относится к коллекции "projects", но ваши правила разрешают запросы только к коллекции с именем "some_collection". Я ожидаю, что запрос, который вы здесь показываете, всегда будет терпеть неудачу, учитывая правила, которые вы также показываете. Либо вы использовали неправильное имя коллекции, либо ваши правила просто не соответствуют тому, что вы пытаетесь сделать со своим запросом.

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

...