Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift Firebase云Firestore-初始化集合_Swift_Firebase_Google Cloud Firestore - Fatal编程技术网

Swift Firebase云Firestore-初始化集合

Swift Firebase云Firestore-初始化集合,swift,firebase,google-cloud-firestore,Swift,Firebase,Google Cloud Firestore,我正在Swift中开发一个聊天应用程序,当用户第一次创建聊天室时,Firebase中显然还没有这个聊天室。只有在创建第一条消息之前,所有内容都会生成 当我的应用程序第一次加载时,在viewDidLoad()中,我正在设置对该路径下聊天的引用(请记住它不存在): 因此,当我在下面添加快照侦听器时,用户在线程上创建他的第一条消息,侦听器不会为每个人启动(无论如何,我假设,因为它不会为我启动) 我确实喜欢这样,一旦你添加了第一条消息,它就会创建上面的整个文档结构,但这意味着我的第一个可能正在观看线程的

我正在Swift中开发一个聊天应用程序,当用户第一次创建聊天室时,Firebase中显然还没有这个聊天室。只有在创建第一条消息之前,所有内容都会生成

当我的应用程序第一次加载时,在viewDidLoad()中,我正在设置对该路径下聊天的引用(请记住它不存在):

因此,当我在下面添加快照侦听器时,用户在线程上创建他的第一条消息,侦听器不会为每个人启动(无论如何,我假设,因为它不会为我启动)

我确实喜欢这样,一旦你添加了第一条消息,它就会创建上面的整个文档结构,但这意味着我的第一个可能正在观看线程的用户(无论这种情况多么不可能)将无法获得消息

这是我试图防范的一种不常见的边缘情况,还是我需要这样做(伪代码)

我想知道是否有某种初始值设定项可以调用来为我创建结构,但仍然设置它,以便我发送给集合的第一条消息触发快照侦听器


谢谢

你所做的是不必要的。创建集合不需要正式的方法。当您第一次将文档写入到集合中时,集合就开始存在了。您可以毫无问题地侦听空集合,即使在添加集合时该集合在仪表板中不可见,也应该调用侦听器。

您所做的是不必要的。创建集合不需要正式的方法。当您第一次将文档写入到集合中时,集合就开始存在了。您可以毫无问题地侦听空集合,即使在添加该集合时该集合在仪表板中不可见,也应该调用侦听器。

看起来您是对的-我刚刚尝试过,它成功了。我以前一定是把事情搞砸了,或者没有设置正确的断点,谁知道呢。不管怎样,我们现在都很好,谢谢你花时间帮助我。我会留下这个答案,以防它对像我这样的新手有任何帮助。看起来你是对的——我刚刚试过,它成功了。我以前一定是把事情搞砸了,或者没有设置正确的断点,谁知道呢。不管怎样,我们现在都很好,谢谢你花时间帮助我。我会留下这个答案,以防对像我这样的新手有所帮助。
  reference = db.collection("chatrooms").document("\(chatRoomId)").collection("thread").document("\(threadId)").collection("messages")
 IF (this collection doesn't exist yet) THEN
       CREATE GROUP/THREAD/EMPTY MESSAGE COLLECTION
        reference = db.collection("chatrooms").document("\(chatRoomId)").collection("thread").document("\(threadId)").collection("messages")
    ELSE
        reference = db.collection("chatrooms").document("\(chatRoomId)").collection("thread").document("\(threadId)").collection("messages")
 END