热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何从firebase删除帖子?迅速-howtodeletepostfromfirebase?Swift

IhavebeentryingalotofthingsandIhavebeensearchingalotontheinternetbutIcantfind

I have been trying a lot of things and I have been searching a lot on the internet but I can't find a solution that helps me because of how my code is set up.

我一直在尝试很多东西,我一直在互联网上搜索很多,但由于我的代码设置方式,我无法找到帮助我的解决方案。

Any how I have been trying to delete posts but I don't really know how to do this since my posts are uploaded in a Auto Id generated by firebase and I dont know what to write here

任何我一直试图删除帖子但我真的不知道如何做到这一点,因为我的帖子上传了由firebase生成的自动ID,我不知道在这里写什么

Database.database().reference.child("posts").child("HERE IS THE AUTO ID").removeValue

How do I get this? Please help me I have been stuck for this problem a while now. I have no clue how to get the autoid.

我怎么得到这个?请帮帮我,我已经被困了一段时间了。我不知道如何获得autoid。

this is how I upload the post

这是我上传帖子的方式

   if (self.imageFileName != "") {
        if choosenCountryLabel.text == "Albania" {
            // image has finshed the uploading, Saving Post!!!
            if let uid = Auth.auth().currentUser?.uid {

                Database.database().reference().child("users").child(uid).observeSingleEvent(of: .value, with: { (snapshot) in
                    if let userDictiOnary= snapshot.value as? [String: AnyObject] {
                        for user in userDictionary{
                            if let username = user.value as? String {
                                if let streetAdress = self.locationAdressTextField.text {
                                    if let title = self.titleTextField.text {
                                        if let cOntent= self.contentTextView.text {
                                            let postObject: Dictionary = [
                                                "uid" : uid,
                                                "title" : title,
                                                "content" : content,
                                                "username" : username,
                                                "time" : self.timeStamps,
                                                "timeorder" : self.secondTimeStamps,
                                                "image" : self.imageFileName,
                                                "adress" : streetAdress,
                                                "postAutoID" : self.postAutoID
                                            ]


                                            let postID = Database.database().reference().child("posts").childByAutoId()
                                            let postID2 = Database.database().reference().child("AlbaniaPosts").childByAutoId()
                                            let postID3 = Database.database().reference().child(uid).childByAutoId()

                                            postID.setValue(postObject)
                                            postID2.setValue(postObject)
                                            postID3.setValue(postObject)
                                            let postAutoID = postID.key
                                            let postAutoID2 = postID2.key
                                            let postAutoID3 = postID3.key
                                            print(postAutoID)
                                            print(postAutoID2)
                                            print(postAutoID3)

                                            let alertPosting = UIAlertController(title: "Successfull upload", message: "Your acty was successfully uploaded.", preferredStyle: .alert)
                                            alertPosting.addAction(UIAlertAction(title: "OK", style: .default, handler: { (action) in
                                                let vc = self.storyboard?.instantiateViewController(withIdentifier: "AlbaniaVC")
                                                self.present(vc!, animated: true, completion: nil)
                                            }))
                                            self.present(alertPosting, animated: true, completion: nil)



                                            print("Posted Succesfully to Firebase, Saving Post!!!")

                                        }
                                    }
                                }
                            }
                        }
                    }
                })
            }

        }
    }else{
        let alertNotPosting = UIAlertController(title: "Seems like you got connection problems", message: "Your image has not been uploaded. Please Wait 10 seconds and try again.", preferredStyle: .alert)
        alertNotPosting.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
        self.present(alertNotPosting, animated: true, completion: nil)
    } 

and here is the query in firebase.

2 个解决方案

#1


0  

Delete data

删除数据

The simplest way to delete data is to call remove() on a reference to the location of that data.

删除数据的最简单方法是在对该数据位置的引用上调用remove()。

You can also delete by specifying null as the value for another write operation such as set() or update(). You can use this technique with update() to delete multiple children in a single API call.

您还可以通过将null指定为另一个写操作(如set()或update())的值来删除。您可以将此技术与update()一起使用,以在单个API调用中删除多个子项。

#2


0  

You have to save the autoID when you query your data or you have to save the key inside the post when you upload it.

您在查询数据时必须保存autoID,或者在上传时必须将密钥保存在帖子中。

If want to get the key when you query. You can do something like this:

如果想在查询时获取密钥。你可以这样做:

let ref = Database.database().reference()
ref.child("posts").queryLimited(toLast: 7).observeSingleEvent(of: .value, with: { snap in
    for child in snap.children {
        let child = child as? DataSnapshot
        if let key = child?.key { // save this value in your post object
            if let post = child?.value as? [String: AnyObject] {
                if let adress = post["adress"] as? String, let title = post["title"] as? String { // add the rest of your data
                    // create an object and store in your data array
                }            
            }
        }
    }
})

Note the above query only gets the last 7 posts. If you want to continue to get more you'll need to look into pagination.

请注意,上述查询仅获取最近7个帖子。如果你想继续获得更多,你需要考虑分页。

If you want to save the id in your posts you just add it when you upload like this:

如果您想在帖子中保存ID,只需在上传时添加:

let key = ref.child("posts").childByAutoId().key

let post = ["adress": adress,
            "content": content,
            "postID": key] as [String: Any]

let postFeed = ["\(key)" : feed]

ref.child("posts").updateChildValues(postFeed, withCompletionBlock: { (error, success) in
    if error != nil {
        // report the error
    }
    else {
        // everything is fine
    }
})

Then when you query you can do something like this:

然后,当您查询时,您可以执行以下操作:

let ref = Database.database().reference()
ref.child("posts").observeSingleEvent(of: .value, with: { snap in
    for child in snap.children {
        if let post = child?.value as? [String: AnyObject] {
            if let postID = post["postID"] as? String {
                // save this key in a post object so you can access it later to delete
            }
        }
    }
})

Now assuming you created an object called post you can delete that post using

现在假设您创建了一个名为post的对象,您可以使用删除该帖子

ref.child("posts").child(post.postID).removeValue(completionBlock: { (error, refer) in
    if error != nil {
        // failed to delete post                    
    }
    else {
        // delete worked
    }
})

推荐阅读
  • 本文介绍了UUID(通用唯一标识符)的概念及其在JavaScript中生成Java兼容UUID的代码实现与优化技巧。UUID是一个128位的唯一标识符,广泛应用于分布式系统中以确保唯一性。文章详细探讨了如何利用JavaScript生成符合Java标准的UUID,并提供了多种优化方法,以提高生成效率和兼容性。 ... [详细]
  • 本文深入探讨了CGLIB BeanCopier在Bean对象复制中的应用及其优化技巧。相较于Spring的BeanUtils和Apache的BeanUtils,CGLIB BeanCopier在性能上具有显著优势。通过详细分析其内部机制和使用场景,本文提供了多种优化方法,帮助开发者在实际项目中更高效地利用这一工具。此外,文章还讨论了CGLIB BeanCopier在复杂对象结构和大规模数据处理中的表现,为读者提供了实用的参考和建议。 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • PHP预处理常量详解:如何定义与使用常量 ... [详细]
  • 在HTML布局中,即使将 `top: 0%` 和 `left: 0%` 设置为元素的定位属性,浏览器中仍然会出现空白填充。这个问题通常与默认的浏览器样式、盒模型或父元素的定位方式有关。为了消除这些空白,可以考虑重置浏览器的默认样式,确保父元素的定位方式正确,并检查是否有其他CSS规则影响了元素的位置。 ... [详细]
  • Silverlight 实战指南:深入解析用户提交数据的验证与捕获机制
    本文深入探讨了Silverlight中用户提交数据的验证与捕获机制,详细分析了四种主要的验证方法:基本异常处理、DataAnnotation注解、IDataErrorInfo客户端同步验证以及自定义验证策略。通过实例解析,帮助开发者更好地理解和应用这些机制,提升应用程序的数据处理能力和用户体验。 ... [详细]
  • 在处理大规模数据数组时,优化分页组件对于提高页面加载速度和用户体验至关重要。本文探讨了如何通过高效的分页策略,减少数据渲染的负担,提升应用性能。具体方法包括懒加载、虚拟滚动和数据预取等技术,这些技术能够显著降低内存占用和提升响应速度。通过实际案例分析,展示了这些优化措施的有效性和可行性。 ... [详细]
  • 在C#编程中,数值结果的格式化展示是提高代码可读性和用户体验的重要手段。本文探讨了多种格式化方法和技巧,如使用格式说明符、自定义格式字符串等,以实现对数值结果的精确控制。通过实例演示,展示了如何灵活运用这些技术来满足不同的展示需求。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 本文介绍了一种自定义的Android圆形进度条视图,支持在进度条上显示数字,并在圆心位置展示文字内容。通过自定义绘图和组件组合的方式实现,详细展示了自定义View的开发流程和关键技术点。示例代码和效果展示将在文章末尾提供。 ... [详细]
  • 深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案
    深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案 ... [详细]
  • 卓盟科技:动态资源加载技术的兼容性优化与升级 | Android 开发者案例分享
    随着游戏内容日益复杂,资源加载过程已不仅仅是简单的进度显示,而是连接玩家与开发者的桥梁。玩家对快速加载的需求越来越高,这意味着开发者需要不断优化和提升动态资源加载技术的兼容性和性能。卓盟科技通过一系列的技术创新,不仅提高了加载速度,还确保了不同设备和系统的兼容性,为用户提供更加流畅的游戏体验。 ... [详细]
  • 尽管我们尽最大努力,任何软件开发过程中都难免会出现缺陷。为了更有效地提升对支持部门的协助与支撑,本文探讨了多种策略和最佳实践,旨在通过改进沟通、增强培训和支持流程来减少这些缺陷的影响,并提高整体服务质量和客户满意度。 ... [详细]
  • HBase Java API 进阶:过滤器详解与应用实例
    本文详细探讨了HBase 1.2.6版本中Java API的高级应用,重点介绍了过滤器的使用方法和实际案例。首先,文章对几种常见的HBase过滤器进行了概述,包括列前缀过滤器(ColumnPrefixFilter)和时间戳过滤器(TimestampsFilter)。此外,还详细讲解了分页过滤器(PageFilter)的实现原理及其在大数据查询中的应用场景。通过具体的代码示例,读者可以更好地理解和掌握这些过滤器的使用技巧,从而提高数据处理的效率和灵活性。 ... [详细]
author-avatar
mqfcu123
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有