【问题标题】:Error in event handler for "click": "ReferenceError: user is not defined"“单击”的事件处理程序中的错误:“ReferenceError:未定义用户”
【发布时间】:2019-06-08 23:15:44
【问题描述】:

请帮助我。我已经工作了好几天,试图修复这个错误,并一直以相同的点击处理程序错误“用户未定义”结束我只是无法弄清楚这意味着什么......这是一个 vuejs/vuex/vuetify/firestore项目。请任何帮助将不胜感激。

来自store/index.js的相关代码

 updateUser({ commit, state },
        payload) {
        commit('setLoading', true);
        commit('clearError');
        firebase
            .firestore()
            .collection('users').doc(`users/${user.uid}`).add()
            .then((data, payload) => {
                const key = data.key;
                let displayName = payload.name;
                let address = payload.address;
                let city = payload.city;
                let state1 = payload.state1
                let zip = payload.zip
                let country = payload.country
                let company = payload.company
                let email = payload.email
                let phoneNumber = payload.phone
                commit('updateUser', {
                    id: key,
                    name: displayName,
                    phone: phoneNumber,
                    email: email,
                    address: address,
                    city: city,
                    state1: state1,
                    zip: zip,
                    country: country,
                    company: company
                })
            }).catch(err => {
                console.log(err)
            })
    },

组件代码...

methods: {
  onUpdate() { 
    this.$store.dispatch("updateUser", { 
      email: this.email, 
      name: this.name, 
      company: this.company, 
      address: this.address, 
      city: this.city, 
      state1: this.state1, 
      zip: this.zip, 
      country: this.zip, 
      phone: this.phone, 
    });
  },

【问题讨论】:

  • ${user.uid} 中的user 是从哪里来的..?
  • 请出示您的$store.dispatch('updateUser', ...) 行。我怀疑你想使用 payload.user.id 或类似的东西,但如果不看到你如何调用操作就无法确定
  • 仅供参考,我认为DocumentReference 没有add 方法。您确定您的 Firestore 代码正确吗?

标签: firebase vue.js google-cloud-firestore vuex


【解决方案1】:

假设user是一个状态属性,即

state: {
  loading: false,
  errors: [],
  user: null      // ? here
},

那么你的 Firestore docref 应该是

.doc(`users/${state.user.uid}`)

由于您的操作执行异步操作,因此您应该考虑通过让它返回承诺使其成为composable,例如

updateUser({ commit, state }, payload) {
  commit('setLoading', true)
  commit('clearError')
  return firebase.firestore()... // ? note the "return" here

【讨论】:

    猜你喜欢
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-08
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 2014-11-19
    相关资源
    最近更新 更多