当前位置: 首页 > 知识库问答 >
问题:

使用swift中添加的.value/.child从Firebase检索数据时出现问题

钮兴安
2023-03-14

我正在做一个项目,从firebase(它是“排队的”)中提取数据。本质上,数据是以W/a时间戳的方式保存的,因此当调用数据时,可以按顺序排序(先进先出)。

我面临的问题是当我在我的应用程序上检索数据。根据我的研究,在堆栈溢出和firebase文档中,.value提供一个快照,并在添加新数据时继续监听数据。然而,当添加新数据时,它将获得整个集合的新快照(因此在我的应用程序数组上“复制数据”)。

App_Queue:
         Category1:
                        Timestamp1:
                                  Uid: User_1_uid
                         Timestamp2:
                                   Uid: User_2_uid
self.databaseRef.child("App_Queue/\(Category1)").queryLimitedToLast(15).observeEventType(.Value, withBlock: { (snapshot) in
                if let userDict = snapshot.value as? [String:AnyObject]{
                    for each in userDict{

                        let timeIdExtract = each.0 as! String 

                        self.timeIdArray.append(timeIdExtract)
                        print(self.timeIdArray)
                    }

//this gives me full snapshot of time stamps & a userId
          //but if timestamp3 and user_3_uid is added to firebase, the array is appended with a new snapshot thus, duplicating items.
self.databaseRef.child("App_Queue/\(Category1)").queryLimitedToLast(15).observeEventType(FIRDataEventType.ChildAdded, withBlock: { (snapshot : FIRDataSnapshot) in
                if let userDict = snapshot.value as? [String:AnyObject]{
                    for each in userDict{

                        let timeIdExtract = each.0 as! String // Every follwers ID.

                        self.timeIdArray.append(timeIdExtract)
                        print(self.timeIdArray)
                    }

           //this gives me only new items added, but not already added. 
          // if timestamp3 and user_3_uid is added the array is appended with this new item. But timestamp1 & timestamp2 not added
self.databaseRef.child("App_Queue/\(Category1)").queryLimitedToLast(15).observeEventType(.ChildAdded, withBlock: { (snapshot) in
...

共有1个答案

晋涛
2023-03-14

我很傻--在块后面有一些无关的代码,这些代码正在扔掉东西。多!对于任何遇到问题的人,首先检查!还有。ChildAdded与observeEventType配对完成了这个任务。(获取DB+中已有的所有以前的数据,并在新数据进来时添加新数据)。

self.databaseRef.child("App_Queue/\(Category1)").queryLimitedToLast(15).observeEventType(.ChildAdded, withBlock: { (snapshot) in
...
 类似资料:
  • 我目前正在做一个优惠券项目。在处理我的facade类时,我遇到一个问题,通过使用外键从表中输入客户的ID来获取客户已购买的优惠券列表。 我使用的方法是: 优惠券类别: 调用方法: 我的SQL表: Coupon_vs_Customer表仅包含2行。它们都是其他表的外键。CustomerID连接到“Customers”表,而coupon_ID连接到表“Coupons” 正如您在上面看到的,ID为1的客

  • 我正在两个标记之间画一条路线,我想保存那条路线。为此,我将包含lat和lng的ArrayList保存在Firebase数据库中。但我在取回航路点时遇到了问题。我是这样插入的: 在检索数据时,我尝试执行以下操作:

  • 我对Firebase和Android是新手。我已经在我的Firebase帐户中存储了用户身份验证详细信息(姓名、个人资料图像而不是电子邮件ID)。我想检索那些数据(如姓名等)到我的应用程序的其他部分。如何检索实时数据库子值?

  • 问题内容: 我目前正在学习Firebase和iOS的知识,因此请耐心等待。我当前正在发布到我的表,如下所示: 我正在尝试检索插入新记录时创建的内容,但是无法检索它。我已经尝试过( 但是由于浏览网页而无法找到一个可靠的解决方案,所以这是一个随机的猜测 )。有任何想法吗? 问题答案: 注意 :-Althogh 是自以来的一项强大功能,但是当您想创建具有唯一键的节点时更喜欢将数据存储到其中。我之所以喜欢

  • 我试图实现一对一聊天使用firebase实时数据库,我插入消息与senderid,Recieverid,消息,日期,sendername,Recievername,在我的情况下,不同的用户是不同的聊天室,我需要展示这个聊天室一对一聊天室我如何实现在我的android应用程序 下面是我检索数据的代码 但这段代码从聊天室获取所有数据,但我需要排除发送者名和接收者名相等的消息,sendername是从应

  • 我有一个,它充当提要,从我的Firebase数据库中检索和显示数据。它是窗口的根视图控制器,所以它总是存在的。我的问题是,每当控制器出现时,其观察节点的所有子节点都会被添加到collection视图中。这在最初是很好的,但是当我离开控制器并返回时,所有相同的数据都会被追加,从而创建重复数据。下面是一些伪代码,代表我与Firebase的交互: 在这个伪代码中,我只打印,而不是处理UI,但问题仍然存在