我遇到了循环两个Polymers firebase-collection元素的问题。 使用我的数据库结构,我首先要检查用户有权访问哪些事件,然后从事件中获取有关该事件的信息。
这段代码的问题在于,当我循环第二个firebase-collection时,“events”上的数据绑定在重复的所有内容上都是相同的,因此每个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>
答案 0 :(得分:2)
我有一个解决方案,我认为这不是解决此问题的最佳方法,但它对我有用。我创建了另一个名为&#39; 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>
和其他用户&#39;:
<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上的Firebase Database For SQL Developers。