【问题标题】:Firebase: Create a named child referenceFirebase:创建一个命名的子引用
【发布时间】:2017-03-08 02:40:59
【问题描述】:

我制作了一个反应组件,它记录每次我的猫被喂食的情况。但是,目前它不会每天自动创建一个新的空日志。我正在尝试添加一种方法来在每天午夜创建一个新条目,但为了使其与我制作的现有组件一起使用,每个新条目都需要以“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'))
   }
}

我也尝试过 this.dbroot.set() 但这不起作用,因为它需要先存在 childref。

更新:我刚刚尝试了以下在技术上有效的方法,但它也覆盖了整个 ref,而不是仅仅向 ref 添加新日期。

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 : {}
    })
  }
}

有什么建议吗?

【问题讨论】:

    标签: javascript firebase firebase-realtime-database


    【解决方案1】:

    当您调用 push() 时,Firebase 会使用自动生成的推送 ID 将数据写入新位置。

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

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

    【讨论】:

    • 谢谢,弗兰克。我刚刚尝试过,但它并没有添加新的子节点,而是覆盖了所有子节点并用新的替换它!
    • 由于某种原因它现在可以工作了。一定是出了差错。谢谢大佬!
    猜你喜欢
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 2022-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-22
    • 1970-01-01
    相关资源
    最近更新 更多