通过查询从Firebase获取用户电子邮件

wal*_*ode 5 firebase

我想在我的应用程序中通过电子邮件实现搜索,但有点坚持查询的设计.我的数据结构看起来像这样

users {
      uid {
          email: email@email.com 
Run Code Online (Sandbox Code Playgroud)

我尝试了以下查询:

console.log(reqestEmail); // proper email here
new Firebase(USERS)
  .startAt(reqestEmail)
  .endAt(reqestEmail)
  .once('value', function(snap){
     var foundUser = snap.val();

     console.log(foundUser) // output is null
    });
Run Code Online (Sandbox Code Playgroud)

我想问题在于我在路径上有一个uid.但是如何使用这种数据结构实现搜索 - 如果我这个uid是需要的结果?

如果使用Firebase 2.0.2和AngularFire 0.9很重要

对不起伙计们:诺布在这里.也有暂停帐户的危险.

Fra*_*len 7

您必须先通过电子邮件地址订购,以便您可以对其进行过滤:

console.log(reqestEmail); // proper email here
new Firebase(USERS)
  .orderByChild('email')
  .startAt(reqestEmail)
  .endAt(reqestEmail)
  .once('value', function(snap){
     var foundUser = snap.val();
     console.log(foundUser) // output is correct now
  });
Run Code Online (Sandbox Code Playgroud)

这个jsbin中的工作示例:http://jsbin.com/fenavu/2/edit?js,console

  • 该博客帖子将`orderByChild`功能提前一年.我通常不会将博客文章视为产品文档的一部分,正是因为这个原因:产品更改时不会更新它们.也就是说:该帖子中的方法仍然有效,并且在Firebase的自动索引生成太有限的情况下仍然有用(例如当您想要搜索多值字段时,例如"电子邮件地址**es**")当然,"某人"会在帖子中添加一个关于`orderByChild`的注释,这当然很好. (3认同)
  • 如果你说你读了哪些文档以及如何改进这个页面会更有建设性,这样就可以明白如何实现这个目标. (2认同)