Javascript 使用ionic creator访问firebase数据时遇到问题
我是一名IOS开发新手,正在练习构建我的第一个应用程序。但是,我无法访问firebase中的数据 例如,我有以下数据: 我将使用工作正常的用户名和密码登录应用程序,然后使用:Javascript 使用ionic creator访问firebase数据时遇到问题,javascript,firebase,ionic-framework,firebase-realtime-database,firebase-authentication,Javascript,Firebase,Ionic Framework,Firebase Realtime Database,Firebase Authentication,我是一名IOS开发新手,正在练习构建我的第一个应用程序。但是,我无法访问firebase中的数据 例如,我有以下数据: 我将使用工作正常的用户名和密码登录应用程序,然后使用: var user=firebase.auth().currentUser; console.log(user.email+“”+user.username); 上面打印的是“quanie”。turner@gmail.comundefined”但用户名变量在数据库中有明确定义。也许我忽略了什么或者做错了什么。我非常感谢你
var user=firebase.auth().currentUser;
console.log(user.email+“”+user.username);
上面打印的是“quanie”。turner@gmail.comundefined”但用户名变量在数据库中有明确定义。也许我忽略了什么或者做错了什么。我非常感谢你的帮助
编辑:我将数据存储在注册代码中。下面是如何操作的(顺便说一句:scope.data数组包含username变量):
函数($scope、$stateParams、$firebaseAuth、$firebaseArray、$state){
var auth=$firebaseAuth();
var ref=firebase.database().ref('users');
var users=$firebaseArray(ref);
$scope.data={};
$scope.signup=函数(){
auth.$createUserWithEmailAndPassword($scope.data.email,$scope.data.password)。然后($scope.signupSuccess);
}
$scope.signupSuccess=函数(){
用户。$add($scope.data);
$state.go('login');
}
}
您似乎混淆了两种产品:
用户名
属性。它确实有一个displayName
属性,但这同样与Firebase数据库无关
您似乎通过以下调用将其他用户信息存储到Firebase数据库中:
firebase.database().ref("users").push({ email: user.email, password: password, username: username })
虽然这是在数据库中存储数据的有效方法,但它使查找Firebase身份验证用户的数据变得困难。后面的用户由其UID(user.UID
)标识,这就是为什么自定义在/users/$UID
下存储其他用户属性的原因:
firebase.database().ref("users").child(user.uid).set({ email: user.email, password: password, username: username })
如果具有该结构,则可以使用以下内容加载当前用户的其他属性:
var usersRef = firebase.database().ref("users");
usersRef.child(user.uid).once("value").then(function(snapshot) {
console.log(snapshot.val());
});
使用当前结构,您还可以查找用户。但由于您的结构中可能有多个用户具有相同的电子邮件地址,因此您需要对其进行查询,并需要处理查询可能匹配多个节点的事实:
var usersRef = firebase.database().ref("users");
var query = usersRef.orderByChild("email").equalTo(user.email);
query.once("value").then(function(snapshot) {
snapshot.forEach(function(userSnapshot) {
console.log(userSnapshot.val());
});
});
更新
据我所知,你应该更换你的手表
users.$add($scope.data);
与
哇,谢谢你的澄清。这很有道理。你知道吗,如果有一个数据库命令,我可以从数据库中存储的信息中获取当前用户的信息(如图片中用户名变量下存储的数据)。我正在将信息添加到我的答案中。但是,如果您演示如何将这些信息存储在数据库中,则会更容易提供帮助。我现在已经猜到了。刚刚编辑了我的答案,包括我是如何存储数据的。现在将阅读您的编辑。
ref.child(firebase.auth().currentUser.uid).set($scope.data);