Я начал работать с 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().
Предлагаю вам еще немного изучить документ и пример: https://github.com/vuejs/vuefire и https://github.com/vuejs/vuefire/blob/master/examples/todo-app/index.html
Обновите после вашего комментария. Подробная информация о том, как «узнать случайно сгенерированный ключ»
Согласно документации:
Each record in the bound array will contain a .key property which specifies the key where the record is stored. So if you have data at /Teams/-LEzOBT-mp...../, the record for that data will have a .key of "-LEzOBT-mp.....".
Взгляните на эту часть документа: https://github.com/vuejs/vuefire#array-bindings.
Таким образом, вы получите все ключи объекта Teams. Теперь вам нужно выбрать элемент, который вы хотите обновить.
Вы также можете объявить запрос в своем объекте firebase, например:
firebase: {
team21483: this.database
.ref('Teams')
.orderByChild('teamCode')
.equalTo('21483')
}
и вы получите массив только с одной командой, с TeamCode = 21483.
Лучший подход в этом последнем случае - вручную привязать этот запрос Firebase с помощью методов экземпляра $bindAsArray (или, возможно, $bindAsObject), используя переменную, которую вы передаете в equalTo ().
Хорошо, я вижу. Думаю, мне еще многому нужно научиться. Я начну работать с указаниями, которые вы мне дали. Большое спасибо!
Я знаю, что если бы я мог получить ключ, это упростило бы задачу, но проблема в том, что я хочу создавать записи и удалять их, поэтому я не уверен, как я могу узнать случайно сгенерированный ключ, который я получаю в firebase.