`dataSnapShot.getChildren()` 返回 null。

huangapple go评论118阅读模式
英文:

dataSnapShot.getChildren() returning null

问题

  1. 我正在尝试使用查询来获取特定用户的用户详细信息
  2. DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
  3. Query query = reference
  4. .child("user_account_settings")
  5. .orderByChild("user_id")
  6. .equalTo(getItem(position).getUser_id());
  7. query.addListenerForSingleValueEvent(new ValueEventListener() {
  8. @Override
  9. public void onDataChange(DataSnapshot dataSnapshot) {
  10. Log.d(TAG, "onDataChange: 获取的用户ID为 " + getItem(position).getUser_id());
  11. for(DataSnapshot singleSnapshot : dataSnapshot.getChildren()){
  12. //做一些操作
  13. }
  14. }
  15. @Override
  16. public void onCancelled(DatabaseError databaseError) {
  17. }
  18. });

[Firebase数据库截图][1]

根据数据库中获取的用户ID是正确的,并且它明显具有子节点,但由于某种原因 dataSnapshot.getChildren() 为空,因此无法允许我遍历 foreach 循环。

  1. <details>
  2. <summary>英文:</summary>
  3. I&#39;m trying to fetch the user details of a particular user using a query:
  4. DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
  5. Query query = reference
  6. .child(&quot;user_account_settings&quot;))
  7. .orderByChild(&quot;user_id&quot;)
  8. .equalTo(getItem(position).getUser_id());
  9. query.addListenerForSingleValueEvent(new ValueEventListener() {
  10. @Override
  11. public void onDataChange(DataSnapshot dataSnapshot) {
  12. Log.d(TAG, &quot;onDataChange: the fetched user id is &quot; + getItem(position).getUser_id());
  13. for(DataSnapshot singleSnapshot : dataSnapshot.getChildren()){
  14. //do stuff
  15. }
  16. }
  17. @Override
  18. public void onCancelled(DatabaseError databaseError) {
  19. }
  20. });
  21. [Firebase database screenshot][1]
  22. The user id that is fetched is correct according to the database and it clearly has children, but for some reason `dataSnapshot.getChildren()` is empty thus not allowing me to iterate through the foreach loop.
  23. [1]: https://i.stack.imgur.com/ydKR9.jpg
  24. </details>
  25. # 答案1
  26. **得分**: 2
  27. 你代码中的问题在于数据库中的用户 ID 属性被称为 `userid`,而在你的查询中你使用的是 `user_id`,这是不正确的。你查询中的字段名称必须与数据库中的字段名称匹配。要解决这个问题,只需将:
  28. .orderByChild("user_id")
  29. 改为:
  30. .orderByChild("userid")
  31. <details>
  32. <summary>英文:</summary>
  33. The problem in your code lies in the fact that the user ID property is called in the database `userid`, while in your query you are using `user_id`, which is incorrect. The name of the field in your query must match the name field in the database. To solve this, simply change:
  34. .orderByChild(&quot;user_id&quot;)
  35. To:
  36. .orderByChild(&quot;userid&quot;)
  37. </details>

huangapple
  • 本文由 发表于 2020年9月14日 22:59:53
  • 转载请务必保留本文链接:https://go.coder-hub.com/63886894.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定