Как вы вкладываете два элемента коллекции 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.