Firebase-Polymer:从数据变量访问子 Object/Array

Firebase-Polymer: Accessing a sub Object/Array from the data variable

我在我的 Polymer 应用程序中有一个 firebase 登录,然后我从用户目录获取数据并将其存储为数据。在数据中,我有多个子目录("books"、"contacts" 等),在书籍和联系人中,我有多个 Items/Objects(多个 books/contacts):

{ 
"users" : {   
    "google:117487344423952031114" : {
        "books" : {
            "kjsdkk" : {
                "author" : "Edward",
                "id" : 11,
                "language" : "English",
                "original" : "Shakeout"
            },
            sdlsjdksjhdkjh" : {
                "author" : "Olaf",
                "id" : 11,
                "language" : "Deutsch",
                "original" : "BlaBlaBla"
            },
            "x,kshdkjha" : {
                "author" : "Don",
                "id" : 10,
                "language" : "Latin",
                "original" : "Carpe diem"
            }
        },
        "contacts" : {
            "sadjköljds" : {
                "email" : "bob@gmail.com",
                "name" : "Bob",
                "phone" : "+01 34566646467456"
            },
            "xölmödlkdcls" : {
                "address" : "First Street, 2",
                "name" : "Robert",
                "phone" : "+49 646415664"
            }
        }
    }
}

在我的 Web 应用程序中,我有 2 个部分(书籍和联系人),我想用这样的方式遍历所有 books/contacts:

<template is="dom-repeat" items="{{data.books}} as="book">
    <tr on-tap="_openBookDialog">
              <td>{{book.id}}</td>
              <td>{{book.author}}</td>
              <td>{{book.original}}</td>
              <td>{{book.language}}</td>
              <td>{{book.status}}</td>
    </tr>
</template>

但是当我调用 items="{{data.books}}" 我的书没有显示在我的屏幕上,只有当我将我的书直接放在数据 "node" 下具有唯一 id 时,书才会显示,怎么能我从数据Array/Objects?

访问书籍

您正在使用嵌套数据结构。这将导致 Firebase 必须加载 user/$uid.

下的所有内容

尝试将您的数据结构重构为更扁平的结构。

{
  "users": {
    "google:117487344423952031114": {
       "name": "some name"
     }
  },
  "usersBooks": {
     "google:117487344423952031114": {
       "kjsdkk": {
         "author": "Edward",
         "id": 11,
         "language": "English"
       }
     }
  },
  "userContacts": {
     "google:117487344423952031114": {
       "sadjköljds" : {
         "email" : "bob@gmail.com",
         "name" : "Bob",
         "phone" : "+01 34566646467456"
       }
     }
  }
}

现在您只需遍历 /userBooks/$uid/$bookid 即可为该用户获取图书。这同样适用于联系人。

这个结构是扁平的。您可以独立检索节点而无需加载不需要的数据。

如果您不知道 $key 代表密钥。它还可以表示安全规则中使用的通配符。