【问题标题】:read firestore data from another project从另一个项目读取 Firestore 数据
【发布时间】:2021-04-02 07:00:41
【问题描述】:

我构建了一个用于订购食物的应用程序,并且我想构建另一个应用程序来从中读取 Firestore 数据,我做了很多研究,但我没有找到一种方法。

我想要的是,如果 FireStore 从我想在第二个应用程序中读取的第一个应用程序中获取一个新数据,即 firstName、lastName、area、phoneNumber,这可能吗?

这是我的代码

   import UIKit
   import Firebase
 
  class infoViewController: UIViewController, UITextFieldDelegate {



@IBOutlet var firstName: UITextField!
@IBOutlet var lastName: UITextField!
@IBOutlet var phoneNumber: UITextField!
@IBOutlet var area: UITextField!
    


override func viewDidLoad() {
    super.viewDidLoad()
    
 
    overrideUserInterfaceStyle = .light
   
    
    
    
    firstName.delegate = self
    lastName.delegate = self
    phoneNumber.delegate = self
    area.delegate = self
    
    
    let Tap:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
    
    view.addGestureRecognizer(Tap)
    

}




@objc func dismissKeyboard() {

    view.endEditing(true)
}




func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    self.view.endEditing(true)
    return false
}


let db = Firestore.firestore()
var ref: DocumentReference? = nil



@IBAction func checkOut(_ sender: UIButton) {
    
    
    
    ref = db.collection("check order").addDocument(data: [
        
        "firstname": firstName.text!,
        "lastname": lastName.text!,
        "area": area.text!,
        "phone": phoneNumber.text!
                   
    ]
    
    )
    
    
    if firstName.text == "" || lastName.text == "" || phoneNumber.text == "" || area.text == "" {
        
  
        let optionMenu = UIAlertController(title: nil, message: "Please complete your infrmation", preferredStyle: .alert)
        

        let cancelAction = UIAlertAction(title: "OK", style: .cancel, handler:
                                            nil)
        optionMenu.addAction(cancelAction)
        
     
        self.present(optionMenu, animated: true, completion: nil)
        
    }
}



}

【问题讨论】:

  • 嗨,欢迎来到 StackOverflow。将数据发送到不同的应用程序是什么意思?您是指不同的视图控制器/类还是实际不同的 iOS 应用程序?
  • @LucaSfragara 嘿,我的意思是实际不同的 iOS 应用程序
  • @LucaSfragara 我想你明白了,但是如果 Firestore 中保存了新数据,是否可以获得通知?
  • 试试看一下 FireBase 触发器firebase.google.com/docs/functions/firestore-events。让我知道我发布的答案是否有帮助。
  • @LucaSfragara 是的,这很有帮助,谢谢,但问题是如果 Firestore 收到新的数据列表,我如何将其发送到第二个应用程序?

标签: swift firebase firebase-realtime-database google-cloud-firestore swift5


【解决方案1】:

您应该拥有第一个将数据上传到 Firestore 的应用程序。 (只需为列表中的每个上传创建一个新文档)。然后在第二个应用程序上对同一列表进行查询并检查新文档。如果有新文档,只需获取它们。

【讨论】:

    【解决方案2】:

    您可以让两个不同的应用与同一个 Firebase 进行“对话”。只需将应用添加到控制台中的 Firestore 项目并下载并安装配置即可。

    假设你想用 App_A 写数据,用 App_B 读数据。只需将 App_B 中的 Firebase 侦听器(观察者)添加到 App_A 将其数据写入的同一集合中即可。

    请参阅Listen for realtime updates 上的文档

    当从 App_A 写入数据时,Firebase 会向 App_B 发送一个包含写入数据的事件,以便 App_B 可以处理它。

    如果您正在查找任何数据,只需向集合中添加一个侦听器,该侦听器将显示任何已添加、更改或删除的数据。

    如果要监听特定的数据,可以通过添加查询来限制结果;例如,假设您的用户位于德克萨斯州,并且该用户应该只收到德克萨斯州发生的事件的通知。

    App_B 会向同一个节点添加一个监听器 App_A 也会写入数据,并且该数据应该包含一个状态名称字段;那么 App_B 将监听包含该州名称的任何文档:

    db.collection("some_collection").whereField("state", isEqualTo: "Texas")
    

    【讨论】:

    猜你喜欢
    • 2022-01-27
    • 1970-01-01
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 2019-06-14
    • 1970-01-01
    • 2019-07-31
    • 1970-01-01
    相关资源
    最近更新 更多