2016-07-26 93 views
0

我有点卡住,试图使用聚合物火力聚合物元素将数据按需推送到Firebase数据库。我在DOM元素内部有一个数据绑定,它对于已经存在的寄存器来说是完美无瑕的。我真正的问题是如何创建具有唯一ID的新寄存器?通过聚合火力/火力点查询元素将数据推送到Firebase

​​

如果我修改的模板有一个铁的输入和2个数据绑定,此更新放心的寄存器和火力地堡没有问题。

<template is="dom-repeat" items="{{data}}"> 
    <div class="card"> 
     <input is="iron-input" bind-value="{{item.text}}"> 
    </div> 
</template> 

真正棘手的部分是如何把一个新的对象(消息)火力地堡一个唯一的ID,像"lasdjlkadj1978kld"

//firebase estructure 
{ 
    "uid" : { 
     "messages" : { 
     "message1" : { 
      "message" : "some text", 
      "timestamp" : "some date" 
     }, 
     "message2" : { 
      "message" : "some text", 
      "timestamp" : "some date" 
     } 
     ... 
     ... 
     } 
    } 
} 

我试图通过更新JS,但其仅在本地修改的“数据”对象......

回答

4

我不知道我正确理解你的问题。

如何创建具有唯一ID的新寄存器?

您可以使用firebase-document提供save方法需要2个参数parentPath和密钥(刚刚离开的关键)。

<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> 

我曾试图通过JS,但在更新 “数据” 对象,其唯一的修改 本地...

你如何更新data,你使用this.set

+0

即时通讯不知道如何使用firebase-document元素,文档并没有多大用处,你能分享一个例子吗? – RoO

+0

我认为这[codelab](https://codelabs.developers.google.com/codelabs/polymer-firebase-pwa/index.html?index=..%2F..%2Findex#0)是一个很好的开始(并参见他们的[行为](https://github.com/PolymerLabs/note-app/blob/master/common/note-app/na-behavior.html))。我已经更新了我的答案,希望有所帮助。 –

+0

太棒了! '。这个。$。document.save(path).then'就像预期的那样工作....谢谢... – RoO