Как я могу использовать опору как часть пути Firebase, используя VueFire?

1

У меня есть список объектов в 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))
    }
Теги:
vuejs2
vue-component
vuefire
firebase-realtime-database

2 ответа

0

Это сожгло меня довольно сложно. Вы должны использовать функцию 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)
        }
    }
}
0

Согласно официальному документу VueFire, ваш способ использовать крюк создания точно верен. Firebase в основном работает в другом жизненном цикле с Vue.js, поэтому вам нужно использовать этот синтаксис doller, предоставленный VueFire.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню