【问题标题】:How to Update Firebase document如何更新 Firebase 文档
【发布时间】:2019-10-06 00:18:58
【问题描述】:

当我尝试更新 Firebase 文档时,它会在console 中显示以下错误消息

未处理的承诺拒绝 FirebaseError: "Function 使用无效数据调用 DocumentReference.update()。不支持的字段 值:未定义(在字段名称中找到)"

我尝试使用console.log() 进行调试,发现变量editedItem 在更新方法中无法识别。

如何解决这个问题

data: () => ({
    editedIndex: -1,
    editedItem: {
      id: 1,
      name: "SSFS",
      description: "XXXX"
    },
    newItem: {
      id: null,
      name: null,
      description: null
    }
  }),


    save() {
      if (this.editedIndex > -1) {
        // Update Category
        // Object.assign(this.desserts[this.editedIndex], this.editedItem);
        db.collection('categories').where('id', '==', this.editedItem.id).get().then( (querySnapshot) => {
          querySnapshot.forEach( (doc) => {
            doc.ref.update({
              name : this.editedItem.name,
              description : this.editedItem.description
            }).then(() => {
              this.$router.push('/categories') 
            })
          })
        })
      }
    }

错误:

未处理的承诺拒绝 FirebaseError:“使用无效数据调用函数 DocumentReference.update()。不支持的字段值:未定义(在字段名称中找到)

【问题讨论】:

标签: javascript firebase vue.js firebase-realtime-database google-cloud-firestore


【解决方案1】:

您试图以错误的方式访问数据对象。 你应该把你的数据函数变成一个对象。

所以而不是:

data: () => ({
editedIndex: -1,
editedItem: {
  id: 1,
  name: "SSFS",
  description: "XXXX"
},
newItem: {
  id: null,
  name: null,
  description: null
}

}),

只需从该实现中删除该函数,并将此数据作为常规对象呈现。

这样做:

data: {
editedIndex: -1,
editedItem: {
  id: 1,
  name: "SSFS",
  description: "XXXX"
},
newItem: {
  id: null,
  name: null,
  description: null
}

},

这将使您可以使用“this”关键字访问数据对象并获得正确的值。

现在你要做的就是改变这些行:

name : this.editedItem.name,
description : this.editedItem.description

进入这个:

name: this.data.editedItem.name,
description: this.data.editedItem.description

【讨论】:

  • 感谢您的想法。这是 VueJs 代码
猜你喜欢
  • 2018-09-15
  • 1970-01-01
  • 2020-05-24
  • 2021-12-19
  • 1970-01-01
  • 2019-09-16
  • 2020-10-23
  • 1970-01-01
  • 2019-12-04
相关资源
最近更新 更多