javascript - 如何使用Vue js删除和编辑firebase中的记录
问题描述
我一般是 javascript 和网页设计的初学者,我正在尝试学习如何使用 Vue js 使用本教程在 firebase 实时数据库上创建、读取、更新和删除数据。该教程很有帮助,我设法设置了 Vue CLI,安装了 Vuefire 和 firebase,并创建了一个可以成功地将名称列表添加到我的 firebase 数据库的项目。但是,在删除和编辑名称时,我陷入了困境。这是我得到的错误:
Error: "Reference.child failed: First argument was an invalid path = "undefined". Paths must be non-empty strings and can't contain ".", "#", "$", "[", or "]""
validatePathString index.cjs.js:1669
child index.cjs.js:13845
setEditName App.vue:86
click App.vue:68
在我看来,这意味着我在 inremoveName
和其他函数中使用的参数“.key”无效,因为它未定义、为空或包含错误中列出的字符。那么如果这不是使用 Vue js 在 Firebase 实时数据库中编辑和删除记录的方法,那它是怎么做到的呢?
这是代码:
应用程序.vue
<div>
<ul>
<li v-for="personName of names"
v-bind:key="personName['.key']">
<div v-if="!personName.edit">
<p>{{personName.name}}</p>
<button @click="removeName(personName['.key'])">
Remove
</button>
<button @click="setEditName(personName['.key'])">
Edit
</button>
</div>
<div v-else>
<input type="text" v-model="personName.name">
<button @click="saveEdit(personName)">
Save
</button>
<button @click="cancelEdit(personName['.key'])">
Cancel
</button>
</div>
</li>
</ul>
</div>
以下是 CRUD 数据库操作的函数:
removeName(key) {
namesRef.child(key).remove();
},
// This function updates the name under a specific key
// in the firebase db hence editting a name
setEditName(key) {
namesRef.child(key).update({ edit: true });
},
// Create function for cancelling edit
cancelEdit(key) {
namesRef.child(key).update({ edit: false })
},
// Function for saving edits
saveEdit(person) {
const key = person['.key']
// Set overwrites the current data
namesRef.child(key).set({ name: person.name,
edit: false })
}
您的帮助将不胜感激。提前致谢。
解决方案
推荐阅读
- c# - AppDomain.CurrentDomain.SetThreadPrincipal 问题
- python-3.x - 如何解决缺少参数的问题
- symfony - Symfony4:资产文件夹在哪里?
- oracle-golden-gate - Oracle Goldengate - IF 语句 - 不等于
- java - 可选的三元运算符中不需要的空指针异常
- r - 研究集群的 sd 时有时会返回 NA,有时没有
- python - 通过类中特定对象的名称访问所有变量
- azure - Azure 逻辑应用中的创建 blob 和创建块 blob 操作有什么区别?
- django - Django 生产静态文件不工作(部署)
- java - 使用 SpringJUnit4ClassRunner 测试包含服务的控制器逻辑