代码之家  ›  专栏  ›  技术社区  ›  gvon79

如何获取项目在实时数据库中的位置

  •  0
  • gvon79  · 技术社区  · 5 年前

    我想得到一个项目在数据库中的位置,以及数据。

    .ref("users")
    .orderByChild("email")
    .equalTo(myEmail)
    .once("value", snapshot => {
        console.log("Database Position", ???? )
    }
    

    快照中是否有一个值可用于指示数据库中的位置(通过电子邮件排序后)?我不想在客户端执行此操作,因为我有1k个用户

    0 回复  |  直到 5 年前
        1
  •  0
  •   Frank van Puffelen    5 年前

    firebase实时数据库不会跟踪节点在其父节点中的位置,也不会在查询结果中返回这样的位置。这意味着确定子节点在一组子节点中的位置的唯一方法是在查找的子节点之前检索所有子节点。

    .ref("users")
    .orderByChild("email")
    .endAt(myEmail)
    .once("value", snapshot => {
        var index = 0;
        snapshot.forEach(function(childNode) {
            if (childNode.child("email").val() === myEmail) {
                console.log("Database Position", index);
            }
            else {
                index = index + 1;
            }
        });
    }
    

    既然您评论了您正在尝试创建排行榜,请参见: