5

我有一个循环两个 Polymers firebase-collection 元素的问题。使用我的数据库结构,我首先必须检查用户可以访问哪些事件,然后从事件中获取有关该事件的信息。

这段代码的问题在于,当我循环第二个 firebase-collection 时,“事件”上的数据绑定在所有重复项上都是相同的,因此每个 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>
4

1 回答 1

2

我有一个我认为不是解决此问题的最佳方法的解决方案,但它对我有用。我创建了另一个名为“my-user”的元素,我公开了一个名为 user 的属性,该属性从第一个 dom-repeat 中分配了 user 的值。一切正常,但是,我对这个解决方案不满意。我仍在寻找不涉及为此创建专用元素的解决方案。

<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 数据库中通常所做的那样加入。在 youtube 上观看适用于 SQL 开发人员的 Firebase 数据库。

于 2015-08-17T17:17:37.753 回答