Как вы вкладываете два элемента коллекции Firebase от Polymer в dom-repeat?

У меня есть проблема зацикливания двух элементов сбора огненной базы Polymers. С моей структурой базы данных я сначала должен проверить, к каким событиям пользователь имеет доступ, а затем получить информацию об этом событии из событий.

Проблема с этим кодом состоит в том, что когда я зацикливаюсь на второй сборке firebase, привязка данных для "событий" будет одинаковой для всех повторяющихся и, следовательно, она будет одинаковым именем на каждом h4.

Так есть ли способ иметь уникальную переменную в data="{{ }}". или есть лучший способ выписать данные?

<firebase-collection data="{{userData}}" location="{{_getCorrectUrl()}}"></firebase-collection> 
<template is="dom-repeat" items="{{userData}}" as="user">
  <firebase-collection data="{{events}}" location="{{_getCorrectEventsUrl(user.__firebaseKey__)}}" ></firebase-collection> 
  <template is="dom-repeat" items="{{events}}" as="event">
    <h4>{{event.value.name}}</h4>
  </template>
</template>

1 ответ

У меня есть решение, которое я считаю не лучшим способом решения этой проблемы, но оно работает для меня. Я создал еще один элемент под названием "my-user", я выставил атрибут с именем user, которому присваивается значение user с первого dom-repeat. Все работает, однако я не удовлетворен этим решением. Я все еще ищу решение, которое не включает создание отдельного элемента для этого.

<firebase-collection data="{{userData}}" location="{{_getCorrectUrl()}}">
</firebase-collection> 
<template is="dom-repeat" items="{{userData}}" as="user">
  <my-user user="[[user]]"></my-user>
</template>

и другой "мой пользователь":

<dom-module id="my-user">
<template>
  <firebase-collection data="{{events}}" location="{{_getCorrectEventsUrl(user)}}" ></firebase-collection> 
  <template is="dom-repeat" items="{{events}}" as="event">
    <h4>{{event.value.name}}</h4>
  </template>
</template>
<script>
    (function () {
  Polymer({
    is: 'my-user',
    _getCorrectEventsUrl: function(obj) {
      return 'https://app.firebaseio.com/users/' + obj.__firebaseKey__;
    },
    properties: {
      user:{
        type:Object,
      },
    },

  });
})();
</script>
</dom-module>

РЕДАКТИРОВАТЬ

Теперь, после некоторого времени ответа на этот вопрос, я понял, что когда кто-то сталкивается с такой ситуацией с базой данных NoSQL, это обычно выдвигает на первый план проблему в дизайне. Данные должны быть нормализованы, и следует избегать объединения, как это обычно делается в базах данных SQL. Посмотрите базу данных Firebase для разработчиков SQL на YouTube.

Другие вопросы по тегам