Запрос Polymerfire firebase не работает и нет журнала ошибок

Я хочу получить данные из Firebase с помощью полимерного огня, и почему-то это не работает.

Данные Firebase

lol-project (a name with 5 randomized letters)
+- events
    +- (some random event id, which is auto-generated)
        +- name: "haha"
        +- desc: "hihi"
    +- (some random event id, which is auto-generated)
        +- name: "huhu"
        +- desc: "hehe"

Код (Polymer v1.6, Polymerfire v0.10.2)

<link rel="import" href="../../../bower_components/polymerfire/polymerfire.html">
<link rel="import" href="../../../bower_components/polymerfire/firebase-auth.html">
<link rel="import" href="../../../bower_components/polymerfire/firebase-query.html">
...
<firebase-auth user="{{user}}"></firebase-auth>

<firebase-query id="eventquery" path="/events" data="{{events}}"></firebase-query>

<div class="Page-container" id="section1">
    <template is="dom-repeat" items="[[events]]" as="item">
        <p>[[item.name]]</p>
    </template>
</div>
...
properties: {
    events: {
        type: Object,
        observer: '_eventsChanged'
    }
},

_eventsChanged: function(newData, oldData) {
    console.log("it changed?!");
    console.info(newData);
}

Правила Firebase

{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null"
  }
}

Нет ошибок, нет данных. console.info(newData); дает пустой массив. После нескольких часов гугления я наткнулся на похожий случай, который, по-видимому, остался без ответа в здесь (да, эта проблема очень похожа на ту).

Кто-нибудь знает, что мне не хватает? Пожалуйста помоги.


person shihandrana    schedule 02.04.2017    source источник


Ответы (1)


Несколько вещей:

  1. events - это массив. См. firebase-query: "Если дочерние узлы запроса являются объектами (в большинстве случаев), данные будут представлять собой массив этих объектов с дополнительным полем $key, добавленным для представления ключа».
  2. Нет необходимости импортировать polymerfire.html
  3. Вы уверены, что вошли в систему? Вы можете распространить свойство входа в firebase-auth <firebase-auth user="{{user}}" signed-in="{{signedIn}}"></firebase-auth> и поместить User signedIn is {{signedIn}} чуть выше вашего <div>.

Вы также можете временно изменить правила безопасности базы данных.

person SamP    schedule 02.04.2017
comment
Привет! 1. Я изменил тип событий на Массив. 2. Закомментировал polymerfire.html 3. Я получил User signedIn is false, что меня удивляет, потому что я ДЕЙСТВИТЕЛЬНО вошел в систему и в оболочке приложения в правом верхнем углу (<app-header-layout> -> <app-header> -> <app-toolbar> показывает мое имя и изображение профиля. Я пытаюсь подписать выйдите и войдите снова, и это все то же самое Я смущен, если честно. - person shihandrana; 02.04.2017
comment
привет @СамП! Вы правы, нет. 3 однозначно проблема. У меня есть 2 страницы: home.html и add.html. На обеих страницах первая страница загрузки всегда signedIn = false, а когда я перехожу на другую страницу, вторая страница всегда signedIn = true. И если 2-я страница - это мой home.html (это страница, о которой здесь идет речь), то все работает. Есть ли у вас какое-либо объяснение или помощь в обеспечении постоянной аутентификации на всей странице? Или я думаю, что должен задать новый вопрос в stackoverflow - person shihandrana; 02.04.2017
comment
Похоже, вы не создаете элементы, а просто используете базовые html-файлы (поскольку имя ваших файлов не содержит -). Поэтому я думаю, что распространение переменных может пойти не так. Я бы посоветовал посмотреть видео Роба Додсона: youtube.com/playlist?list=PLNYkxOF6rcIDdS7HWIC_BYRunV6MHs5xo Или почитайте об архитектуре приложения: polymer-project.org/1.0/docs /tools/polymer-cli Удачи! - person SamP; 02.04.2017