Vue Firebase:更新子项并向子项写入

Vue Firebase:更新子项并向子项写入,firebase,firebase-realtime-database,vue.js,vue-component,Firebase,Firebase Realtime Database,Vue.js,Vue Component,我开始使用Firebase和Vue,也开始使用VueFire,我不知道如何更新Firebase的子节点 我打开了一个firebase项目并连接到它,我可以将数据推送到它 我制作了一个vue组件 import db from '../FireBase' let team = db.ref('Teams');//Reference to Teams at firebase let miss = db.ref().child('Teams'); //Attempt to get to t

我开始使用Firebase和Vue,也开始使用VueFire,我不知道如何更新Firebase的子节点

我打开了一个firebase项目并连接到它,我可以将数据推送到它

我制作了一个vue组件

 import db from '../FireBase'

  let team = db.ref('Teams');//Reference to Teams at firebase 
  let miss = db.ref().child('Teams'); //Attempt to get to the children of Teams 
  export default {
    name: "App",
    firebase: {
      Teams_loc: db.ref('Teams'),
      Mission: this.Teams_loc.child('Teams'),
    missionKey:  db.ref().child('Teams').push("").key,
    },
...
我设法从firebase获取团队并向其发送数据:

this.$firebaseRefs.Teams_loc.push({
    "test": "tester"
});
但当我尝试更新里面的孩子时

this.miss.push({
              "where": "am i"
            })
我得到以下错误

Cannot read property 'child' of undefined
当我尝试更新一个孩子时

this.$firebaseRefs.missionKey.update(arr[0]);//arr[0] is an object
我试着看了好几个地方,但似乎没什么效果


谢谢,

当您执行以下操作时,您在第二行出现错误

  Teams_loc: db.ref('Teams'),
  Mission: this.Teams_loc.child('Teams'),
Teams节点的子节点没有值为“Teams”的键

因此,如果您想更新项目,首先必须获取其密钥,例如-LEzOBT mp。。。。。并按照文档中的说明执行以下操作:

updateItem: function (item) { 
   // create a copy of the item
   const copy = {...item}
   // remove the .key attribute
   delete copy['.key']
   //possibly update (or add) some values of (to) the item
   this.$firebaseRefs.Teams_loc.child(item['.key']).set(copy)
}
另外,如果我没有误认为执行db.ref将生成一个错误,因为您必须将一个值传递给ref

我建议你多研究一下博士和这个例子:和

更新以下您的评论。有关如何知道随机生成的密钥的详细信息

根据文件:

绑定数组中的每条记录都将包含一个.key属性,该属性 指定存储记录的键。所以如果你在 /Teams/-LEzOBT mp…/,该数据的记录将具有.key -莱佐特议员

查看文档的这一部分:

因此,您将获得Teams对象的所有键。您现在必须选择要更新的项目

您还可以在firebase对象中声明查询,如:

  firebase: { 
    team21483: this.database
            .ref('Teams')
            .orderByChild('teamCode')
            .equalTo('21483') 
  }
您将得到一个只有一个团队的数组,其中团队代码为21483


在最新的情况下,最好的方法是使用$BindaArray或可能的$BindaObject实例方法手动绑定到此Firebase查询,使用传递给equalTo的变量。

我知道如果我能得到密钥,事情会变得更简单,但问题是我想生成条目并删除它们,所以我不确定如何知道在firebase中随机生成的密钥。好的,我明白了。我想我还有很多东西要学。我会按照你给我的指导开始工作。谢谢!