Firebase:创建一个命名的子引用

时间:2017-03-07 17:24:29

标签: javascript firebase firebase-realtime-database

我已经做了一个反应组件,每次我的猫被喂食时记录。但是目前它不会自动为每天创建一个新的空日志。我正在尝试添加一种方法来在每天午夜创建一个新条目,但是为了使它与我现有的组件一起工作,每个新条目都需要以'DD-MM-YYYY'格式命名。虽然我可以将组件重新设计为不使用它,但是当我进入firebase以查看日志已创建的日期并且不希望更改它时,它一目了然。

所以这是我的问题:每当我尝试执行以下操作时,firebase会忽略我的日期格式并将随机密钥放入其中:

this.midnightCheck = () => {
   // If it is midnight, update the state
   if(moment().format('HH:mm') === '00:00') {
     this.dbroot.push(moment().format('DD-MM-YYYY')).child('date').set(moment().format('DD-MM-YYYY'))
   }
}

我也尝试了这个.dbroot.set()但是这不起作用,因为它要求childref首先存在。

更新:我刚刚尝试了以下技术工作,但它也覆盖了整个参考,而不是仅仅为参考添加新日期。

this.midnightCheck = () => {
  // If it is midnight, update the state
  if(moment().format('HH:mm') === '18:34') {
    console.info('midnightCheck is updating the state')
    this.dbroot.child(moment().format('DD-MM-YYYY')).set({
      date : moment().format('DD-MM-YYYY'),
      logs : {}
    })
  }
}

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

当您致电push()时,Firebase会将数据写入具有自动生成的推送ID的新位置。

如果您想自己确定新孩子的姓名,请致电child()

var date = moment().format('DD-MM-YYYY');
this.dbroot.child(date).child('date').set(date)