通过 polymerfire/firebase-query 元素将数据推送到 Firebase
Push data to Firebase via polymerfire/firebase-query element
我在尝试使用 polymerfire 聚合物元素将数据按需推送到 Firebase 数据库时遇到了一些困难。我在 DOM 元素中有一个数据绑定,它可以完美地用于已经存在的寄存器。我真正的问题是如何创建具有唯一 ID 的新寄存器?
//firebase query for a specific path and a data binding
<firebase-query
id="query"
app-name="testApp"
path="/[[uid]]/messages"
data="{{data}}">
</firebase-query>
//dom repeat for each item inside the data binding
<template is="dom-repeat" items="{{data}}">
<div class="card">
<p>[[item.text]]</p>
</div>
</template>
如果我将模板修改为具有 iron-input 和 2 路数据绑定,这会轻松更新寄存器并且在 Firebase 中没有问题。
<template is="dom-repeat" items="{{data}}">
<div class="card">
<input is="iron-input" bind-value="{{item.text}}">
</div>
</template>
真正棘手的部分是如何使用唯一 ID 将新对象(消息)推送到 Firebase,例如 "lasdjlkadj1978kld"
?
//firebase estructure
{
"uid" : {
"messages" : {
"message1" : {
"message" : "some text",
"timestamp" : "some date"
},
"message2" : {
"message" : "some text",
"timestamp" : "some date"
}
...
...
}
}
}
我尝试通过 JS 更新 "data" 对象,但它只在本地修改...
我不确定我是否正确理解了你的问题。
How to create new registers with unique id?
您可以使用 firebase-document
提供的 save
方法,该方法采用 2 个参数 parentPath 和 key(只需留下密钥)。
<firebase-document id='document'
data='{{data}}'>
</firebase-document>
<script>
Polymer({
saveMessage: function () {
// path = /<uid>/messages in your case
this.$.document.save(path).then(function () {
// after document saved, path will be changed to the new ref
// any change of data will sent back up and stored
});
}
});
</script>
I had tried updating the "data" object via js but its only modified
locally...
你是如何更新data
的,你用过this.set
吗?
我在尝试使用 polymerfire 聚合物元素将数据按需推送到 Firebase 数据库时遇到了一些困难。我在 DOM 元素中有一个数据绑定,它可以完美地用于已经存在的寄存器。我真正的问题是如何创建具有唯一 ID 的新寄存器?
//firebase query for a specific path and a data binding
<firebase-query
id="query"
app-name="testApp"
path="/[[uid]]/messages"
data="{{data}}">
</firebase-query>
//dom repeat for each item inside the data binding
<template is="dom-repeat" items="{{data}}">
<div class="card">
<p>[[item.text]]</p>
</div>
</template>
如果我将模板修改为具有 iron-input 和 2 路数据绑定,这会轻松更新寄存器并且在 Firebase 中没有问题。
<template is="dom-repeat" items="{{data}}">
<div class="card">
<input is="iron-input" bind-value="{{item.text}}">
</div>
</template>
真正棘手的部分是如何使用唯一 ID 将新对象(消息)推送到 Firebase,例如 "lasdjlkadj1978kld"
?
//firebase estructure
{
"uid" : {
"messages" : {
"message1" : {
"message" : "some text",
"timestamp" : "some date"
},
"message2" : {
"message" : "some text",
"timestamp" : "some date"
}
...
...
}
}
}
我尝试通过 JS 更新 "data" 对象,但它只在本地修改...
我不确定我是否正确理解了你的问题。
How to create new registers with unique id?
您可以使用 firebase-document
提供的 save
方法,该方法采用 2 个参数 parentPath 和 key(只需留下密钥)。
<firebase-document id='document'
data='{{data}}'>
</firebase-document>
<script>
Polymer({
saveMessage: function () {
// path = /<uid>/messages in your case
this.$.document.save(path).then(function () {
// after document saved, path will be changed to the new ref
// any change of data will sent back up and stored
});
}
});
</script>
I had tried updating the "data" object via js but its only modified locally...
你是如何更新data
的,你用过this.set
吗?