嗨,我不是火力学专业的专业人士,刚开始从事这项工作。在搜索了很多地方之后,我找不到解决问题的方法。 My firebase database structure is as follow: 我想检索特定配置文件的数据以及firebase和。
生成的唯一$ id $scope.login = function(users)
{
firebase.auth().signInWithEmailAndPassword(users.email, users.password)
.then(function(result)
{
var ref = firebase.database().ref("/profiles");
var examination = $firebaseArray(ref.orderByChild('uid').equalTo(result.uid));
console.log(examination);
结果我得到的是 like this 任何人都可以在这方面帮助我,即如何从结果中获取值。在此先感谢。
答案 0 :(得分:1)
如果您想检索数据并将其记录在代码中,请不要使用AngularFire并坚持使用JavaScript SDK:
$scope.login = function(users) {
firebase.auth().signInWithEmailAndPassword(users.email, users.password)
.then(function(result) {
var ref = firebase.database().ref("/profiles");
var examination = ref.orderByChild('uid').equalTo(result.uid);
examination.on('value', function(snapshot) {
console.log(snapshot.val());
});
您注意到我添加了on('value'
,这就是您告诉Firebase SDK开始从数据库加载数据的方式。 Firebase documentation for web developers涵盖了这一点以及更多内容,我强烈建议您阅读端到端的内容。在那里度过几个小时,会有比你想象的更多的问题。
如果您更喜欢坚持AngularFire,那么您应该停止使用console.log
来检查加载状态。来自AngularFire quickstart:
...
$scope.data
将从远程服务器填充。这是一个异步调用,因此在控制器中数据可用之前需要一些时间。虽然将console.log
放在下一行来阅读结果可能很诱人,但数据尚未下载,因此该对象似乎是空的。
相反,您可以直接在HTML模板中显示数据:
记录数据的最简单方法是使用Angular的
json
过滤器在视图中打印。 AngularFire告诉Angular编译器何时完成加载数据,因此无需担心何时可用。<pre>{{ data | json }}</pre>
最后一个片段来自AngularFire指南中的handling asynchronous operations。
答案 1 :(得分:1)
使用$loaded()
承诺查看值:
$scope.login = function(users)
{
firebase.auth().signInWithEmailAndPassword(users.email, users.password)
.then(function(result)
{
var ref = firebase.database().ref("/profiles");
var examination = $firebaseArray(ref.orderByChild('uid').equalTo(result.uid));
//console.log(examination);
examination.$loaded().then(function (exam) {
console.log(exam);
});
重要的是要意识到调用$firebaseArray
方法会立即返回一个空数组。从服务器返回数据后,将使用实际数据填充现有引用。
$loaded()
方法返回一个从数据库下载数组数据时解析的promise。承诺解析为$firebaseArray
。