У меня есть список объектов в firebase, называемых блюдами. В этом компоненте я хочу показать информацию только об одном приеме, поэтому я передаю поле идентификатора в качестве опоры, и я хочу получить только эту еду от firebase.
Это то, что я пробовал. Это не сработало, потому что this.id не определен:
import db from '@/firebase'
export default {
name: 'meal',
props: {
id: {
type: String,
required: true
}
},
firebase: {
meals: db.ref('meals').child(this.id)
}
}
Я сделал что-то неправильно или вызвал вызов firebase до инициализации реквизита?
РЕДАКТИРОВАТЬ:
Мне удалось сделать это, используя созданный крючок, но он выглядит довольно плохо. Есть ли другой путь?
created() {
this.$bindAsObject('meal', db.ref('meals').child(this.id))
}
Это сожгло меня довольно сложно. Вы должны использовать функцию firebase И создать ссылку на вашу переменную следующим образом:
import db from '@/firebase'
export default {
name: 'meal',
props: {
id: {
type: String,
required: true
}
},
firebase() {
const id = this.$props.id // Pass the reference instead of the prop directly
return {
meals: db.ref('meals').child(id)
}
}
}
Согласно официальному документу VueFire, ваш способ использовать крюк создания точно верен. Firebase в основном работает в другом жизненном цикле с Vue.js, поэтому вам нужно использовать этот синтаксис doller, предоставленный VueFire.