«Uncaught TypeError: Невозможно прочитать свойство 'push' of null" с Polymer 3 и polymirefire3 - PullRequest
0 голосов
/ 19 октября 2018

Я работаю в проекте с Polymer 3 и PolymerFire3.Прямо сейчас я смог успешно использовать элемент firebase-auth.Но теперь, когда я пытаюсь использовать элемент firebase-query, я получаю это на консоли Uncaught TypeError: Cannot read property 'push' of null

Это мой код

import { PolymerElement, html } from '@polymer/polymer/polymer-element.js';
import './shared-styles.js';
import 'polymerfire3/firebase-auth.js';
import 'polymerfire3/firebase-query.js';

class PerfilView extends PolymerElement {
  static get properties() {
    return {
      user: Object,
      uid: String,
      data: {
        type: Object,
        observer: 'dataChanged'
      }
    };
  }

  static get template() {
    return html`

      <firebase-auth
        id="auth" user="{{user}}">
      </firebase-auth>

      <firebase-query
        log
        id="query"
        app-name="morse"
        path="/notes/"
        data="{{data}}">
      </firebase-query>

      <div class="card">
        <div id="notes">
          <ul id="notes-list">
            <template is="dom-repeat" items="{{data}}" as="note">
              <li>
                <p class="content">{{note}}</p>
              </li>
            </template>
          </ul>

          <paper-input value="{{inputP::input}}" label="Take a note.."></paper-input>
          <div id="notes-controls">
            <paper-button id="add" on-tap="add">Add</paper-button>
          </div>
        </div>
      </div>
    `;
  }
  add() {
    this.$.query.ref.push({
      content: this.inputP
    });
  }
}

window.customElements.define('perfil-view', PerfilView);

Это как-то связано сэлементы polymirefire3?

Ответы [ 2 ]

0 голосов
/ 26 октября 2018
Элемент

firebase-query в основном используется для -

объединения указанных свойств в параметры запроса, которые генерируют запрос, запрос на отфильтрованный, упорядоченный, неизменный набор данных Firebase

Здесь далее для чтения.

Я думаю, то, что вы пытаетесь сделать, может быть просто достигнуто следующим образом -

add(noteData) {
    let newNoteRef = firebase.app().database().ref('notes').push();

    return newNoteRef.set(noteData).then(() => {
       console.log(`a new note successfully added.`);
    });
}

После успешных данных upsert firebase-query автоматически обновит data bound-variable, чтобы отразить новый список.

0 голосов
/ 19 октября 2018

Вам нужно будет добавить polymer-document, чтобы добавить запись.В дополнение к вашему коду, что-то вроде:

  <firebase-document
    id="document"
    app-name="morse"
    path="/notes/[[key]]"
    data="{{edata}}">
  </firebase-document>

и отправка новых данных может выглядеть так:

add() {
    var key = firebase.database.ref('notes').push().key;
    this.set('edata', this.inputP);
    this.set('key', key); 
    // this new Note will be syncronised upon new key and edata properties defined. Here firebase-document will keep sysnronised with edata and path. 
}
...