Значение PHP для чтения из Firebase - PullRequest
0 голосов
/ 06 июня 2019

Я хочу иметь возможность читать базу данных по 'test123', посмотреть, существует ли она.Но он продолжает возвращать Naw bool (false), что означает, что он не может найти 'test123'?Это из-за пользовательского идентификатора?

enter image description here

Формат Firebase

public function get(String $userId = NULL){
    if (empty($userId) || !isset($userId)) { return FALSE; }

    if ($this->database->getReference($this->dbname)->getSnapshot()->hasChild($userId)){
        echo "yoohoo";
        return $this->database->getReference($this->dbname)->getChild($userId)->getValue();
    } else {
      echo "Naww";
        return FALSE;
    }
}
$users->get('test123');

1 Ответ

2 голосов
/ 06 июня 2019

Я плохо говорю на PHP, но это определенно выглядит неправильно:

$this->database->getReference($this->dbname)->getSnapshot()->hasChild($userId)

Во-первых, мы не знаем, что такое $this->dbname, но на первый взгляд кажется, что вы читаете всю базу данных.

Но даже если вы просто читаете правильный узел, этот hasChild($userId) не будет работать. Этот код проверяет, есть ли у снимка дочерний узел, у которого ключ равен значению $userId. Это не то, что показывают ваши данные. Ваш JSON показывает ключ userId, который имеет значение , которое вы хотите равным значению $userId. Так что это было бы что-то ближе к getSnapshot().getChild('userId').getValue() == $userId.

Но я все еще сомневаюсь, что это сработает, поскольку вы на самом деле не знаете полный путь к узлу пользователя. В таких случаях вам нужно будет выполнить запрос, в данном случае для свойства userId. Это выглядело бы как в этом разделе документации :

$db->getReference('accounts')
    // order the reference's children by the values in the field 'userId'
    ->orderByChild('userId')
    // returns all accounts with the exact userID
    ->equalTo($userId)
    ->getSnapshot();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...