- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果您有一个为当前用户过滤的 Firebase 快照,您如何为数据库中的所有用户执行此操作?
Path: (people.child(uid).child(peopleWhoLike2)
它适用于当前用户,但我希望它适用于所有用户。可能类似于 snapshot.children.allObjects 中的 peopleArray 一样! [DataSnapshot] { 需要使用。以下是当前的代码
let thisUserRef1 = Database.database().reference().child("people").child(uid)
let myPeopleRef1 = thisUserRef1.child("peopleWhoLike2")
myPeopleRef1.observeSingleEvent(of:DataEventType.value, with: { snapshot in
print("klk")
let peopleArray = snapshot.children.allObjects as! [DataSnapshot]
let filteredResults = peopleArray.filter { person in
let personUid = person.value as! Int
let coordSnap12 = personUid
print("kjk", coordSnap12 )
let date = Date(timeIntervalSince1970: TimeInterval(coordSnap12)/1000.0)
//let secondsInDay = 86400
return Calendar.current.isDateInToday(date)
}
print(filteredResults, "ppp")
let countb = filteredResults.compactMap({$0}).count
print(countb, "ccc")
JSON 数据库结构
"people" : {
"1ZWT7FAE2qThNQfBj7tbMO7BnMo1" : {
"Coordinates" : {
"latitude" : 50.054738,
"longitude" : 8.226809826085624
"peopleWhoLike2" : {
"1vLVFwrXrHUoakmDrnQKwbv08Yj1" : 1581548952597,
"F9NX0UCG4fVHCKFk2VZ1NZKsLro2" : 1586210112155,
"IrrBgFY9C1ekMmHUkQRzc5LhbDu1" : 1581547417432,
最佳答案
如果不读取节点数据,Firebase 实时数据库无法直接获取节点中子节点的数量。所以有两种方法。
观察节点,使用 .childAdded 遍历子节点以获得计数。或者,沿着相同的路线加载所有具有 .value 的子项 - 您可以获得快照子项的计数。缺点是它可能有大量数据,因此不鼓励使用更大的数据集或未知数量的 child 。显然,它的读取量也很大,就好像您有 1000 个用户一样,需要解析大量数据。
保留子计数的单独节点(这是赢家!)
附加节点看起来像这样
like_me_counts
"1ZWT7FAE2qThNQfBj7tbMO7BnMo1": 3
"another user id": 20
"yet another user id": 12
因此,当用户有另一个喜欢他们的人时,将“喜欢者”添加到“peopleWhoLike2”节点,如您的问题所示,然后在 like_me_counts 节点中增加该用户匹配节点。
在这种情况下,如果另一个人喜欢用户 1ZWT7... 从 like_me_counts 节点读取它以获得值 3,加一然后写出 4。如果用户不喜欢他们,读入它,减去 1 和写出新值。
您可以将所有这些包装到一个事务中,这样它要么全部成功,要么全部失败。
编辑
我什至会说最好把喜欢你的人分成自己的节点
like_me
uid_0
user_10: true
user_11: true
uid_1
user_39: true
uid_2
user_46: true
那个结构是什么,每个用户都会在他们的 like_me 节点上添加一个 child 添加的观察者,当有人喜欢他们时......说 user_52 喜欢 user_2
uid_2
user_46: true
user_52: true
然后 uid_2 将收到该通知并可以处理它。显然,我只是将 true 用作占位符,但可能还有其他信息,例如时间戳甚至可用于过滤的子节点(例如,今天的喜欢)
uid_2
user_46: 20200624
user_52: 20200629
关于swift - 如果您有一个 firebase 快照,其中过滤器应用于当前用户的 child ,那么如何对数据库中的所有用户执行此操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62596070/
Maven – 快照 大型软件应用程序通常由多个模块组成,这是多个团队工作于同一应用程序的不同模块的常见场景。例如一个团队工作负责应用程序的前端应用用户接口工程(app-ui.jar:1.0)),同
我的 ES 快照不起作用或看起来是空的。 首先,我在我的 Ubuntu 服务器上做了这个: 1.创建备份目录 mkdir /home/admin/dumps/elasticsearch 2. 将此目录
您好,我想将折线图保存为预定义尺寸 (x, y) 的图像。有没有简单的方法来做到这一点?我找不到任何合适的 Snapshot 参数。 WritableImage image = lineCha
我将 Genymotion 与 Oracle VirtualBox 一起使用,但是我有 250 GB 的 SSD,并且我遇到了(快照)问题 我在这里搜索并搜索,我找不到任何可能的方法来禁用自动快照,因
我们想使用 Grafana 来显示测量数据。现在,我们的测量设置创建了大量数据并保存在文件中。我们按原样保留文件,并直接使用 Spark(“数据湖”方法)对其进行后处理。 我们现在想要创建一些可视化,
我不知道如何制作节点组的快照。也就是说,我想制作一个覆盖有数字的 PNG 图标图像(例如未读消息)。 我的代码: int totalNumberOfUnreadMessages = 1; ImageV
我们想使用 Grafana 来显示测量数据。现在,我们的测量设置创建了大量数据并保存在文件中。我们按原样保留文件,并直接使用 Spark(“数据湖”方法)对其进行后处理。 我们现在想要创建一些可视化,
这个问题在这里已经有了答案: How do I return the response from an asynchronous call? (41 个回答) 关闭 4 年前。 function i
我试图在运行我的程序时保存所有内容。我想保存每个游戏对象及其脚本和变量。我知道可以序列化所有内容并将其保存为 XML(以及其他方式/格式,如 JSON)。这将需要大量的工作和时间。该程序将来可能会发生
我正在玩 Screeps ( http://screeps.com/ ) 模拟房间模式。我已经测试了一些东西,我不想失去我的进步。 我可以在模拟房间模式下拍摄快照并保存我的房间状态,这样我就不必从头开
我的应用程序的测试人员报告:“最近的应用程序列表中的应用程序缩略图根本没有调整。在我看来,它要么像主屏幕壁纸(tolikdru:可能,只是透明的矩形),要么像应用程序屏幕的绿色背景,但从来没有真正的应
这个问题在这里已经有了答案: JavaFX I want to save Chart-Image completely (1 个回答) 关闭 3 年前。 我正在尝试获取“Java 弹出窗口”的快照。
我正在使用 pymongo 从 MongoDB 中插入和检索数据。这两个操作可以同时执行。问题是我什么时候做 rows = db..find()在pymongo中,每次rows.count()返回不同
如何获取通过 选择的视频文件的快照在视频中的特定时间在后台静默(即没有可见元素、闪烁、声音等)? 最佳答案 主要有四个步骤: 创建 和 元素。 加载src URL.createObjectURL 生
您好,我正在使用 JavaFx WebView 创建 HTML 页面的屏幕截图,它工作正常,但我想知道是否可以在不在图形窗口中启动应用程序的情况下执行此操作!!我的意思是没有比这更轻量级的方法来获取屏
所以我有一个 horizontalscrollview,我想尝试添加一个对齐效果,它基本上使元素居中。到目前为止,我基本上都是用 XML 完成的。 然后我在里面有一个 LinearLayout。
调用 URL http:///gitweb.cgi?p=;a=tree;f=;hb=HEAD将显示 的树从 开始. 调用 URL http:///gitweb.cgi?p=;a=snapshot;
我们知道,Maven 项目第一次构建时,会自动从远程仓库搜索依赖项,并将其下载到本地仓库中。当项目再进行构建时,会直接从本地仓库搜索依赖项并引用,而不会再次向远程仓库获取。这样的设计能够避免项目每次构
这个问题在这里已经有了答案: Freeze screen in chrome debugger / DevTools panel for popover inspection? (9 个回答) 关闭
我正在开发一个向 DVR 和 IP 摄像机请求快照的应用程序。我正在开发的设备只提供 RTSP 请求。然后我实现了必要的 RTSP 方法来开始接收流数据包,然后通过建立的 UDP 连接开始接收。我的疑
我是一名优秀的程序员,十分优秀!