我想限制用户最多只能输入5条短信。因此,我想添加具有消息和日期值的“ 1”,“ 2”,“ 3”,“ 4”,“ 5”有序孩子。实际上,我可以通过添加以下代码来进行某种操作
if message0 > 1 && message0 < 7 {
message0 = message0 - 1
}
但是,如果我跳过这一部分,则当系统将数据记录到Firebase中时,它总是会跳过“ 2”子级,然后以正常的升序方式对其进行编号。
数据库截图
我在完整代码下面放了。它可以工作,但是我觉得上面的操作有点奇怪,以后可能会带来麻烦。如果您知道我做错了什么,并且提供了一些很好的建议,请谁适当地以递增方式添加数字孩子,我将非常感激。 还希望添加代码来检查现有子代,以避免覆盖同一子代号下的代码。但是不知道该怎么做。 无论如何,感谢您的任何建议。
func sendInputTextToFirebase() {
var message0 = MyGlobalVariables.refMessages.child(MyGlobalVariables.uidUser!).observe(.childAdded) { (snapshot) in
var a = [String]()
a.append(snapshot.key)
print(a)
let b = a.count
print(b)
}
//TODO: make child counting into dbase upto 5 in more elegant way
if message0 > 1 && message0 < 7 {
message0 = message0 - 1
}
if message0 < 6 {
let messageString = String(message0)
let picker = tergetDateTF.text
let messageT = [
"message": messageTV.text! as String,
"Date": picker]
MyGlobalVariables.refMessages.child(MyGlobalVariables.uidUser!).child(messageString).setValue(messageT)
} else {
print("limit exceeded")
}}}
答案 0 :(得分:0)
注释中的用户建议您可以使用autoId添加消息,如下所示:
MyGlobalVariables.refMessages.child(MyGlobalVariables.uidUser!).childByAutoId().setValue(messageT)
关于邮件计数,您可以执行以下操作:
首先将下一个var设为全局变量
func sendInputTextToFirebase() {
var message0 = MyGlobalVariables.refMessages.child(MyGlobalVariables.uidUser!).observe(.childAdded) { (snapshot) in
a.append(snapshot.key)
print(a)
if(a.count < 6) {
let messageString = String(message0)
let picker = tergetDateTF.text
let messageT = [
"message": messageTV.text! as String,
"Date": picker]
MyGlobalVariables.refMessages.child(MyGlobalVariables.uidUser!).childByAutoId().setValue(messageT)
} else {
print("limit exceeded")
}
答案 1 :(得分:0)
这是两种解决方案
1)读取节点并获得子计数。如果<6,则允许写入
MUSR_MQADMIN
2)保留消息数量的计数器,添加消息时对其进行更新。这是一个结构:
let uid = "some user id"
let usersRef = self.ref.child("textmessages")
messagesRef.child(uid).observeSingleEvent(of: .value, with: { snapshot in
let count = snapshot.childrenCount
if count < 6 {
//write the data
} else {
print("You've already got 5 messages")
}
})
当用户登录时,读取他们的消息计数,并且仅当计数<6时才允许添加消息