这可能很简单,很抱歉...... 我正在尝试创建一个应用程序,我可以通过Firebase创建用户和存储信息。这里有一个例子:
http://image.noelshack.com/fichiers/2015/11/1426182307-log.png
但现在我想检查一下,如果有人想创建一个新用户,该名称是否已经存在。
如何在不知道自己的ID的情况下抓取个人用户信息,例如simplelogin:54?
我已经找到了这个话题Get users by name property using Firebase,但这不是一回事,因为在我的情况下,我不会在#34;用户"
之后认识孩子。干杯,
答案 0 :(得分:1)
就像弗兰克所说,你必须知道一些关于用户能够看到她/他的事情。
但是,这是一般答案。我假设通过" name"你的意思是财产"识别"你已经创造了。
identifiant
媒体资源是否存在用户,您是orderByChild("identifiant")
并查询具有.equalTo("<identifient_here>")
的特定用户。 例如,要检查具有标识符=&#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());
});
simplelogin:53
),则可以使用orderByKey()
代替orderByChild()
进行查询...或者只是将参考设置为用户的关键是这样的: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());
});
$q
服务在工厂中返回承诺。$q
。simplelogin:53
中创建了与您相同的/Users
用户。identifient
= aaa
,您就会找到合适的用户。{
"Users" : {
"simplelogin:53" : {
"identifiant" : "aaa"
}
}
}
.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>