简体   繁体   English

尝试使用 CODABLE 类通过 id 在 firebase 中查找文档时出现 Swift 错误

[英]Swift error trying to find document in firebase by id using CODABLE class

I'm trying to find a document using its id and store in a custom data class.我正在尝试使用其 id 查找文档并将其存储在自定义数据类中。 So far, I've created my first function to search in Firebase a user by email.到目前为止,我已经创建了我的第一个功能来通过电子邮件在 Firebase 中搜索用户。 Email is the Id of the document.电子邮件是文档的 ID。 I've created a class as well to store the the user.我还创建了一个类来存储用户。 You can see both codes here: My firebase database:你可以在这里看到这两个代码:我的 firebase 数据库: 在此处输入图像描述 My class:我的课:

import Foundation
import FirebaseFirestoreSwift


    class Usuario: Codable {
    @DocumentID var email: String?
    let nombre: String
    let apellidos: String
    let telefono: String
    let contraseña: String
    let fotoPerfil: String?
    let ciudad: String
    
        init ( nombre: String, apellidos: String, usuario: String, contraseña: String, fotoPerfil: String?, ciudad: String){
            self.nombre = nombre
            self.apellidos = apellidos
            self.telefono = usuario
            self.contraseña = contraseña
            self.fotoPerfil = nil
            self.ciudad = ciudad
    }

My function:我的功能:

private func buscarUsuarioPorEmail( documentId: String) {
  let docRef = db.collection("Usuarios").document("lorenzorubiorivera@hotmail.com")
  print("This is a quick check for debugging:  \(documentId)")
  docRef.getDocument(as: Usuario.self) { result in
    switch result {
    case .success(let usuario):
      self.usuarioActual = usuario
        print("El usuario actual es: \(self.usuarioActual.nombre) ")
        print(result)
    case .failure(let error):
      print("ERROR ENCONTRADO USUARIO \(error.localizedDescription)")
    }
  }
}

My main view:我的主要观点:

import UIKit
import FirebaseAuth
import FirebaseCore
import FirebaseAnalytics
import FirebaseFirestore
import Lottie

class InicioViewController: UIViewController {
    // He utilizado una variable tipo lazy para poder inicializarla más tarde cuando se llama a la base datos
    lazy var usuarioActual = Usuario()
    lazy var usersCollection = Firestore.firestore().collection("Usuarios")
    @IBOutlet weak var txtEmailUsuario: UITextView!
    // Creamos una conexión a Firestore
    private let db = Firestore.firestore()
    lazy var collectioRef = db.collection("Usuarios")
    
    // MARK: -- Recupero el email mediante su clave en UserDefaults
    private let email = UserDefaults.standard.string(forKey: "emailAutentificado")
    override func viewDidLoad() {
        super.viewDidLoad()
        title = "Datos usuario actual"
        txtEmailUsuario.text = email
        buscarUsuarioPorEmail(documentId: email!)
}

I'm allways reciving the same console error:我总是收到相同的控制台错误:

This is a quick check for debugging: lorenzorubiorivera@hotmail.com这是调试的快速检查:lorenzorubiorivera@hotmail.com
ERROR ENCONTRADO USUARIO The data couldn't be read because it is missing. ERROR ENCONTRADO USUARIO 数据丢失,无法读取。

so I think the issue could be this variables in your decodable:所以我认为问题可能出在您的可解码变量中:

let contraseña: String

Translated It looks like this means password so if you make this nullable, or just remove it, see if it starts working as your document does not contain a value for a key of password.翻译 看起来这意味着password ,所以如果您将其设置为可为空,或者只是将其删除,请查看它是否开始工作,因为您的文档不包含密码键的值。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 尝试使用 Ionic4 和 Angular 6 将文档添加到 firebase 时出错 - 错误:PERMISSION_DENIED:权限被拒绝 - Getting error when trying to add document to firebase using Ionic4 and Angular 6 - Error: PERMISSION_DENIED: Permission denied 获取当前文档的 ID Flutter / Firebase - Get ID of current document Flutter / Firebase Firebase:使用缩短版本的文档 ID 是否可靠? - Firebase: Is it reliable to use a shortened version of a document ID? 如何获取 firebase Firestore 文档 ID - How to get the firebase firestore document id Firestore:将文档 ID 添加到自定义类 - Firestore: Adding Document ID to custom class 通过文档 ID 获取单个数据 Reactjs Firebase Web ZF20E3C5E54C3AB3D375D66B6 - Fetch Single Data by Document Id Reactjs Firebase Web SDK 9 如何将 user.uid 作为 id 的文档添加到 Firebase 中的集合中? - How to add a document with user.uid as id to a collection in Firebase? 如何按日期对 Firestore 文档 ID 进行排序 firebase flutter - How to sort firestore document id date wise firebase flutter Swift/Firebase 数据库无效令牌错误 - Swift/Firebase Database invalid token error swift 中的 firebase 身份验证和 Firestone 错误代码 - firebase auth and Firestone error code in swift
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM