如果我将员工数据存储在具有3个字段的firebase中,并且将来如果我想添加或删除字段,那么它在firebase中的实际情况如何?我该怎么办?
我想将Firebase用于我的iOS项目之一(Swift 4),我将很快开始工作,所以我想澄清上面提到的问题。
答案 0 :(得分:1)
虽然Lance的回答有效 - 这是一个简单的选择。假设您要从Firebase中删除年龄“字段”。鉴于结构
employees
employee_0
name: "Steve"
age: "42"
employee_1
name: "Hank"
age: "37"
如果要从所有员工节点中删除年龄节点,这将执行此操作
let employeesRef = Database.database().reference().child("employees")
employeesRef.observe(.childAdded, with: { snapshot in
let key = snapshot.key
let refToRemove = employeesRef.child(key).child("age")
refToRemove.removeValue()
})
添加字段(子节点)更简单,因为子节点值不能为零,所以当您编写数据时,它会添加到节点
employeesRef.child(employee_key).child("favorite_food").setValue("pizza")
将最喜欢的食物节点添加到员工节点的 pizza 值。
请注意,Firebase中没有“字段”,只有父节点和子节点是关键:值对。
答案 1 :(得分:0)
好像你想做这样的事情。
您在Firebase中的数据库结构是:
root
|
@-012345 // eg. employeeId
|-"firstName": "Hello"
|-"lastName": "World"
|-"age": "25"
您想要添加或删除字段有几种方法可以做到这一点,但这样很容易。您只需跟踪原始值,然后将这些值加上新值添加到Dictionary
,并使用.setValue()
方法排除您想要发送到Firebase的任何内容:< / p>
// class properties
let rootRef: DatabaseReference? = Database.database().reference()
let employedID = "012345"
let firstName = "Hello" // original value you want to keep
let lastName = "World" // original value you want to keep
let age = "25" // original value you want to REMOVE
lat gender = "female" // NEW value you want ADDED
// press the button to send the write the values to Firebase
@IBAction fileprivate func updateEmployeeButton(_ sender: UIButton) {
// add the values to a dictionary
let dict = [String:Any]()
dict.(firstName, forKey: "firstName")
dict.(lastName, forKey: "lastName")
dict.(gender, forKey: "gender")
let employeeIdRef = rootRef?.child(employedID)
employeeIdRef?.setValue(dict) // call Firebase's .setValue method and pass the dict as an argument
}
您的数据库结构现在如下所示:
root
|
@-012345
|-"firstName": "Hello"
|-"lastName": "World"
|-"gender": "female"
请注意我提议完全覆盖该节点上的内容的方式,但Jay的方式保留了那里的内容,但仍然可以获得您想要进行的更改。