swift - 使用 swift 从 firebase 数据库中删除特定值
问题描述
Firebase 数据库
我尝试使用这段代码,但它似乎不起作用。我取用户选择的名称并将其存储在 nameList 中。
假设我将 Blake Wodruff 存储在 nameList[0] 中。如何仅删除该名称?
var nameList = [String](repeating: "", count:100)
func remove() {
print(nameList[countAddNames])
let usernameRef = Database.database().reference().child("Candidate 1").child("alton").child(nameList[countAddNames]);
usernameRef.removeValue();
}
解决方案
要写入或删除节点,您必须指定其整个路径。因此,要从 JSON 中删除节点0
,您可以:
let usernameRef = Database.database().reference().child("Candidate 1").child("alton").child("0");
usernameRef.removeValue();
或者更短一点:
let usernameRef = Database.database().reference().child("Candidate 1/alton/0");
usernameRef.removeValue();
如果您只知道要删除的用户的名称,则需要先查找其索引/完整路径,然后才能将其删除。如果您的应用程序中已有数据,则可以在该代码中执行此操作。否则,您可能必须使用数据库查询(特别是.queryOrderedByValue
and .queryEqualToValue
)来确定值在数据库中的位置。
另请参阅:删除 Firebase swift 中的特定子节点
从 JSON 结构中删除值后,Firebase 可能不再将其识别为数组。因此,强烈建议您不要将数组用于您拥有的结构。事实上,我会将您的数据建模为一个集合,在 JSON 中它看起来像:
"alton": {
"Jake Jugg": true,
"Blake Wodruff": true,
"Alissa Sanchez": true
}
这将自动:
- 防止重复,因为根据定义,每个名称只能出现一次。
- 用他们的名字删除候选人就像
Database.database().reference().child("Candidate 1/alton/Jake Jugg").removeValue()
有关这方面的更多信息,另请参阅我对Firebase 查询的回答,如果子项的子项包含值
推荐阅读
- django - Django Rest Framework + React - 令牌与会话身份验证
- python - 如何在基于单个类的视图中实现搜索表单和发布创建表单
- matlab - call a MATLAB function in GAMS
- python - 在 Panda 中创建列表标题
- node.js - react & nodeJS - HTTP 总是发送 OPTIONS 而不是常规方法
- android - 安卓上的 Python OBD
- ios - 删除后如何保持一对一记录之间的连接?
- sql - Oracle SQL - 选择性过滤导致笛卡尔
- php - htaccess 搜索查询重定向/重写
- gremlin - Traditional pdf indexing solution compared to graph-based version