Swift: Как читать конкретные данные пользователя на основе идентификатора пользователя в Firebase? - PullRequest
0 голосов
/ 10 октября 2018

Я занимаюсь исследованиями уже несколько дней и не смог найти решение.Я использую базу данных Firebase в качестве бэк-энда для своего приложения.Как я могу использовать уникальный идентификатор пользователя как способ чтения определенных пользовательских данных?У меня есть список пользователей, и у каждого пользователя есть свои собственные данные, теперь проблема заключается в том, что, когда я выбираю одного из пользователей, я вижу данные всех пользователей, а не только пользователя, которого я выбрал.Я хочу, чтобы иметь возможность просматривать данные каждого пользователя, выбрав их из таблицы.Любая помощь?

import UIKit
import Firebase
import FirebaseDatabase

class detailsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

    //connecting table view
    @IBOutlet weak var tableViewCards: UITableView!

    // defining firebase reference var
    var ref: DatabaseReference!

    // list to store card details
    var cardList = [CardModel]()

    public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return cardList.count
    }

    public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        // creating a cell using the custom class
        let cell = tableViewCards.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! ViewControllerTableViewCell

        // the card object
        let card: CardModel

        //getting the name
        card = cardList[indexPath.row]
        //adding values to labels
        cell.labelName.text = card.name
        cell.labelCompanyName.text = card.company
        cell.labelRole.text = card.role
        cell.labelMobile.text = card.mobile
        cell.labelPhone.text = card.telephone
        cell.labelEmail.text = card.email
        cell.labelAddress.text = card.address

        return cell
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.

        // getting a reference to the database
        ref = Database.database().reference()

        // observing data changes
        ref.observe(DataEventType.value, with: {(snapshot) in

            // if the reference has values
            if snapshot.childrenCount > 0 {

                //clearing the list
                self.cardList.removeAll()

                //iterating through all the values
                for cards in snapshot.children.allObjects as! [DataSnapshot] {
                    //getting values
                    let cardObject = cards.value as? [String: AnyObject]
                    let personName = cardObject?["name"]
                    let cardId = cardObject?["id"]
                    let companyName = cardObject?["company"]
                    let roleName = cardObject?["role"]
                    let mobileNo = cardObject?["mobile"]
                    let phoneNo = cardObject?["telephone"]
                    let emailAdd = cardObject?["email"]
                    let compAdd = cardObject?["address"]

                    //creating card object with model and values
                    let card = CardModel(id: cardId as! String?, name: personName as! String?, company: companyName as! String?, role: roleName as! String?, mobile: mobileNo as! String?, telephone: phoneNo as! String?, email: emailAdd as! String?, address: compAdd as! String?)

                    //appending it to the list
                    self.cardList.append(card)
                }
                //reloading to the tableView
                self.tableViewCards.reloadData()
            }
        })
    }
}

Структура базы данных:

{
  "-LOGJARYHpNDqiReJGP3" : {
    "address" : "10 test st test ",
    "company" : "grated",
    "email" : "test@email.com",
    "id" : "-LOGJARYHpNDqiReJGP3",
    "mobile" : "0412345678",
    "name" : "Jason",
    "role" : "engineer",
    "telephone" : "02999999"
  }
}

1 Ответ

0 голосов
/ 10 октября 2018

Мы не сможем дать вам точный код, поскольку вы не указали структуру своей базы данных Firebase.

Но вам нужно внести изменения в:

ref = Database.database().reference()

Когда пользователь входит в систему, вы получаете доступ к uid в своем приложении через класс Auth.

ref = Database.database().reference().child("Users").child(user.uid)

Поскольку вы поместили все в корневой узел, вы можете попробовать:

ref = Database.database().reference().child(user.uid)

Вам нужно будет просмотреть вашу базу данных, разделить вещи на другие узлы, иначе безопасность будетпроблема для вас позже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...