用户在firebase上搜索信息

时间:2015-03-12 17:46:46

标签: search firebase

这可能很简单,很抱歉...... 我正在尝试创建一个应用程序,我可以通过Firebase创建用户和存储信息。这里有一个例子:

http://image.noelshack.com/fichiers/2015/11/1426182307-log.png

但现在我想检查一下,如果有人想创建一个新用户,该名称是否已经存在。

如何在不知道自己的ID的情况下抓取个人用户信息,例如simplelogin:54?

我已经找到了这个话题Get users by name property using Firebase,但这不是一回事,因为在我的情况下,我不会在#34;用户"

之后认识孩子。

干杯,

1 个答案:

答案 0 :(得分:1)

就像弗兰克所说,你必须知道一些关于用户能够看到她/他的事情。

但是,这是一般答案。我假设通过" name"你的意思是财产"识别"你已经创造了。

建议


简答

  1. 要检查identifiant媒体资源是否存在用户,您是orderByChild("identifiant")并查询具有.equalTo("<identifient_here>")的特定用户。
  2. 例如,要检查具有标识符=&#34; aaa&#34;,

    的用户
    var usersRef = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/Users");
    var identifient = "aaa";
    usersRef.orderByChild("identifiant").equalTo(identifient).once("value", function(snapshot) {
      console.log("Loaded user by identifient:",identifient,snapshot.val());
    });
    
    1. 如果您想通过密钥进行查询(例如simplelogin:53),则可以使用orderByKey()代替orderByChild()进行查询...或者只是将参考设置为用户的关键是这样的:
    2. var userKey = 'simplelogin:53';
      var userRef = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/Users" + userKey);
      userRef.once("value", function(snapshot) {
        console.log("Loaded user",snapshot.val());
      });
      

      长(呃)回答

      UserFactory

      的示例
      • 查看此工作PLNKR example
      • 它与我的一个公开Firebase实例绑定。
      • 我在simplelogin:53中创建了与您相同的/Users用户。
      • 如果您搜索identifient = aaa,您就会找到合适的用户。
      • 此处的控制器实现仅用于示例目的,并没有真正做任何有价值的事情。它仅供参考。

      数据

      {
        "Users" : {
          "simplelogin:53" : {
            "identifiant" : "aaa"
          }
        }
      }
      

      UserFactory

      .factory('UserFactory', function($q, $firebaseObject, fbUrl){
        return function(userId){
          var deferred = $q.defer();
          if (userId.isNotEmpty()) {
            var userRef = new Firebase(fbUrl + '/Users/').orderByChild("identifiant").equalTo(userId);
            userRef.once("value", 
              function(dataSnapshot){
                if (dataSnapshot.val()) {
                  console.log("Loaded user",dataSnapshot.val());
                  deferred.resolve(dataSnapshot.val());
                } else {
                  console.info("Couldn't find user by id",userId);
                  deferred.reject("No user found by identifient = '"+userId+"'");
                } 
              },
              function(error){
                console.error("Error loading user",error);
                deferred.reject(error);
              }
            );
          } else {
            deferred.reject("No id entered!");
          }
          return deferred.promise;
        }
      })
      

      控制器

      .controller('HomeController',function($scope, UserFactory) {
        $scope.identifient = '';
        var showError = function(errorMessage) {
          if (errorMessage) {
            showUser(false);
            $scope.error = errorMessage;
          } else {
            delete $scope.error;
          }
        }
        var showUser = function (userObject) {
          if (userObject) {
            showError(false);
            $scope.user = userObject; 
          } else {
            delete $scope.user;
          }
        }
        $scope.loadUser = function() {
          var userPromise = new UserFactory($scope.identifient);
          userPromise.then(function(data){
            showUser(data);
          }).catch(function(error){
            showError(error);
          });
        }
       })
      

      模板

      <div ng-controller="HomeController">
        <h2>Home Template</h2>
        <input ng-model="identifient" placeholder="identifient"/>
        <button ng-click="loadUser()">Find User</button>
        <hr/>
        <div ng-if="user">User: {{user}}</div>
        <div ng-if="error">Error: {{error}}</div>
      </div>
      

      希望有所帮助。