firebasepolymerfirebase-realtime-databasefirebase-polymerpolymerfire

Firebase 2.x + Polymer 1.x: Loading Polymerfire from CDN and fetching data


I want to use the polymerfire element to fetch the data at https://dinosaur-facts.firebaseio.com/dinosaurs and display the data in a dom-repeat element.

What am I doing wrong? How do I do that correctly?

Here is the jsBin.

http://jsbin.com/zeyimotasa/1/edit?html,console,output
<!doctype html>
<head>
  <meta charset="utf-8">
  <!-- Source: https://github.com/Download/polymer-cdn -->
  <base href="https://cdn.rawgit.com/download/polymer-cdn/1.7.0.2/lib/">
  <!--- ->
  <base href="https://polygit.org/components/">
  <!--- ->
  Toggle below/above as backup when server is down
  <!--- ->
  <base href="https://polygit2.appspot.com/components/">
  <!---->
  <script src="webcomponentsjs/webcomponents-lite.min.js"></script>
  <link href="polymer/polymer.html" rel="import">
  <link href="polymerfire/polymerfire.html" rel="import">
  <link href="paper-button/paper-button.html" rel="import">
</head>
<body>

<dom-module id="x-element">

<template>
  <style></style>

  <p>
    <paper-button on-tap="_handleClick">Click Me</paper-button>
  </p>
  <!---->
    <firebase-document
      path="https://dinosaur-facts.firebaseio.com/dinosaurs"
      data="{{dinosaurs}}"
      >
    </firebase-document>
    <template is="dom-repeat" items="[[dinosaurs]]">
      [[item.order]]
    </template>
    <template is="dom-repeat" items="[[test]]">
      [[item]]
    </template>
  <!---->

</template>

<script>
  (function(){
    Polymer({
      is: "x-element",
      properties: {
        dinosaurs: Array,
        test: {
          value: function() {
            return ['foo', 'bar', 'baz'];
          }
        },
      },
      _handleClick: function() {
        console.log('You clicked me!');
      }
    });
  })();
</script>

</dom-module>

<x-element></x-element>

</body>

Solution

  • To get data in array/collection form, you need to use the <firebase-query> element, not <firebase-document>. You also need to initialize your application with <firebase-app>:

    <firebase-app api-key="XXX" database-url="yyy" auth-domain="zzz"></firebase-app>
    <firebase-query path="/dinosaurs" data="{{dinosaurs}}"></firebase-query>
    
    <template is="dom-repeat" items="[[dinosaurs]]">
      <!-- ... -->
    </template>