我希望能够通过“ test123”读取数据库,看看是否存在。但是它一直返回Naw bool(false),这意味着它找不到'test123'?是因为自定义ID?
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');
答案 0 :(得分:2)
我的PHP说得不太好,但这肯定是错误的:
$this->database->getReference($this->dbname)->getSnapshot()->hasChild($userId)
首先,我们不知道$this->dbname
是什么,但是乍一看似乎您正在读取整个数据库。
但是,即使您只是在读取正确的节点,该hasChild($userId)
也不起作用。此代码检查快照是否具有其键等于$userId
的值的子节点。那不是您的数据显示的。您的JSON显示一个密钥userId
,该密钥的值您希望等于$userId
的值。所以它更接近getSnapshot().getChild('userId').getValue() == $userId
。
但是我仍然怀疑这是否行得通,因为您实际上并不知道用户节点的完整路径。在这种情况下,您将需要在userId
属性上进行查询。类似于this section of the documentation中的内容:
$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();