“Uncaught TypeError:无法使用Polymer 3和polymerfire3读取属性'push'of null”
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了“Uncaught TypeError:无法使用Polymer 3和polymerfire3读取属性'push'of null”相关的知识,希望对你有一定的参考价值。
我正在与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);
它与polymerfire3元素有关吗?
答案
您需要添加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.
}
另一答案
firebase-query
元素基本上用于 -
将给定属性组合到生成查询的查询选项中,请求过滤的,有序的,不可变的Firebase数据集
Here进一步阅读。
我想,你想做的事情,可以简单地按如下方式实现 -
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以反映新列表。
以上是关于“Uncaught TypeError:无法使用Polymer 3和polymerfire3读取属性'push'of null”的主要内容,如果未能解决你的问题,请参考以下文章