当我尝试更新Firebase文档时,它在console
中显示下面的错误消息。
未处理的承诺拒绝FirebaseError:“函数 使用无效数据调用的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()用无效数据调用。不支持的字段值:未定义(在字段名称中找到)
答案 0 :(得分:0)
您试图以错误的方式访问数据对象。 您应该将数据功能更改为对象。
所以而不是:
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