@Radiss

Как решить проблему с созданием объявлений в Firebase?

Пробую создать SPA приложение в firebase. Но возможно ошибка в работе с версиями, но что не так и как подключаться в новой не разберусь.

"firebase": "^6.6.1",
"vue": "^2.5.2",
"vue-router": "^3.0.1",
"vuetify": "^1.0.0",
"vuex": "^3.1.1"

При попытке создания объявления выдаёт ощибку
Reference.push failed: first argument contains undefined in property 'ads.ownerId'


ads.js

spoiler

import * as fb from 'firebase'

class Ad {
  constructor (title, description, ownerId, imageSrc = '', promo = false, id = null) {
    this.title = title
    this.description = description
    this.ownerId = ownerId
    this.imageSrc = imageSrc
    this.promo = promo
    this.id = id
  }
}

export default {
  state: {
    ads: [
      {  },
   ]
  },
  mutations: {
    createAd (state, payload) {
      state.ads.push(payload)
    }
  },
  actions: {
    async createAd ({commit, getters}, payload) {
      commit('clearError')
      commit('setLoading', true)

      try {
        const newAd = new Ad(
          payload.title,
          payload.description,
          getters.user.id,
          payload.imageSrc,
          payload.promo
        )

        const ad = await fb.database().ref('ads').push(newAd)

        commit('setLoading', false)
        commit('createAd', {
          ...newAd,
          id: ad.key
        })
      } catch (error) {
        commit('setError', error.message)
        commit('setLoading', false)
        throw error
      }
    }
  },
  getters: {
    ads (state) {
      return state.ads
    },
    promoAds (state) {
      return state.ads.filter(ad => {
        return ad.promo
      })
    },
    myAds (state) {
      return state.ads
    },
    adById (state) {
      return adId => {
        return state.ads.find(ad => ad.id === adId)
      }
    }
  }
}


  • Вопрос задан
  • 332 просмотра
Решения вопроса 1
@Aleks_Ko
Да, урок один и тоже - как по мне не плохой, но устаревший....
У меня так же как и у вас возникла ошибка с ownerId, почему-то getters.user.id добавлял в конструктор id пользователя в первый раз, а потом не хотел это делать и выдавал undefined.
Решил таким образом:
вместо getters.user.id в файле ads.js ( createAd ) я вставил fb.auth().currentUser.uid, id пользователя у меня теперь добавляется нормально....
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@TiiGRus
Вот еще пример, того, как можно решить данный момент.
Но курс действительно уже устарел в некоторых вещах.
Тем более, что уже вышла 3 версия Vue.

Ссылка на форум
Ответ написан
Комментировать
@orlovec
начинающий
Похоже у нас одни уроки.
Я как раз дошел до этого тоже. И в инете полно вопросов с этой ошибкой, только ответа нет. На официальном сайте автор так ничего толкового не ответил.
Как вы решили проблему? Там что-то с роутами, как я понимаю...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы