swift - Swift / firebase / firebase中的儿童数量增加
问题描述
我想限制用户最多只能输入 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")
}}}
解决方案
正如评论中的用户所建议的,您可以使用 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")
}
推荐阅读
- html - 使用Bootstrap将div中的项目对齐到较大设备上的水平方向和较小设备上的垂直方向?
- r-markdown - 从 HTML 转换为 PDF 时用 Rmd 编写的幻灯片缺少页面
- php - 使用 ajax 将值从一个 PHP 页面传递到另一个页面
- css - 跨多个元素的连续边框
- json - 我应该通过 JSON 发送图像吗
- python - 如何在tensorflow中使用预批处理数据和不同形状的数据
- javascript - 修改 Selectize.js 库以允许编辑选定的选项
- typescript - 扩展类型的原型
- python - Python - OSError:[WinError 10013] 试图以访问权限禁止的方式访问套接字
- java - 如何根据原始输入对哈希表/枚举进行排序