【问题标题】:How to limit search parameters in Firebase?如何限制 Firebase 中的搜索参数?
【发布时间】:2017-02-11 11:40:38
【问题描述】:

我已将我的 Android 应用程序链接到 Firebase 数据库,问题是每次我在数据库中搜索名称时,它都会显示所有数据库。

如何让应用程序只显示单个名称?这是它的外观:

这是获取数据库的控制器代码:

.controller('BirreCtrl', function($firebaseObject){
  const rootRef=firebase.database().ref().child('databaseBirre');
  this.object=$firebaseObject(rootRef);
})

而这个是它在搜索页面中的HTML代码:

<li ng-show="search" ng-controller="BirreCtrl as birra" ng-animate="animate"><i class="icon ion-beer" id="icona_birra"></i> {{ birra.object | json}}</li>

【问题讨论】:

  • 究竟想要获取什么,现在您正在获取 databaseBirre,它就在您的 firbase 数据库中。里面也有数据吗?
  • 您在问题中包含了 JSON 树的图片。请将其替换为实际的 JSON 作为文本,您可以通过单击 Firebase 数据库控制台中的导出按钮轻松获取该文本。将 JSON 作为文本使其可搜索,让我们可以轻松地使用它来测试您的实际数据并在我们的答案中使用它,总的来说这只是一件好事。
  • 这里是导出 JSON 的数据库结构: { "databaseBirre" : { "Barley" : "4/10", "Old English 800" : "3/10" } }
  • 不确定你需要什么,但是如果你需要 Barley 里面的数据,你应该使用 firebase.database().ref('databaseBirre').child('Barley');

标签: android angularjs ionic-framework firebase firebase-realtime-database


【解决方案1】:

现在你得到的数据是同步的对象是用几个特殊的 $ 属性创建的,比如 $id 等。如果你想要数据值,你应该这样做

  var data = $firebaseObject(ref.child('databaseBirre'));
  data.$loaded().then(function () {
  console.log(data);
  }

  var ref = new Firebase('<your-firebase>');
  var data = $firebase(ref).$asArray();
  console.log(data);

希望这对您有所帮助。谢谢:)

【讨论】:

  • 它有效,但它只在单一啤酒的控制台上显示值(投票)。我需要的是数据库检索啤酒名称,而不是值。类似于这样的列表:Barley Heineken 等。问题是啤酒名称是名称,而投票是一个值,但似乎没有名为 $name 的变量,也许我做错了什么,也许我的数据库结构不好?
  • 实际上这是您的整个 firebase 数据库对象,您确定有比现在得到的更多吗?
  • 对不起,我写的评论不完整错误,现在我编辑它。
  • 你能在控制台查看我更新的答案吗?输出是什么?
  • 它说“未定义”,会不会有多个值,应该是一个数组吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-25
  • 2012-09-24
  • 2011-01-12
  • 2021-11-01
  • 1970-01-01
相关资源
最近更新 更多