Я плохо говорю на 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();