Firebase/AngularJS limitToFirst(1) 不 return 一个 child

Firebase/AngularJS limitToFirst(1) does not return a child

我正在使用 AngularJS 和 Firebase 并尝试从一组过滤后的 children 中获取第一个 child,但 limitToFirst(1) 似乎没有获取首先 child 就像 .child("=KDhddgd47nd") 那样

像这样

var Sport = new Firebase(FirebaseUrl);  
var Teams = Sport.child("teams");  
var myTeam = Teams.child("Saints");  
var myPlayers = myTeam.child("players").orderByChild("name");  
var myFixtures = myTeam.child("fixtures").startAt(now).orderByChild("date");

所以我现在有一组灯具 (myFixtures)

*var myFirstFixture = myFixtures.child("-KDUNN5KRNUmLlOhUB4D");*  

工作并获取夹具,其中 -KDUNN5KRNUmLlOhUB4D = 夹具的 ID

但是
var myFirstFixture = myFixtures.limitToFirst(1);
没有得到相同的结果,即。根本没有固定装置

应该但不应该吗?

嗯...我很确定你必须附上回电,因为这个 doc 指的是......你可以尝试这样做并向我们更新结果吗?

var myFirstFixture = myFixtures.limitToFirst(1).on("child_added", function(snapshot) {
  console.log(snapshot.key() , snapshot.val());
});

有根据的猜测是您正在使用:

$scope.fixture = $firebaseObject(myFirstFixture);

当您直接 Firebase 引用第一个灯具时,这将起作用,就像您 myFixtures.child("-KDUNN5KRNUmLlOhUB4D").

但是当您使用查询时它将不起作用。由于可能有多个项目符合您的条件,因此查询将 always return 一个项目列表。即使只有一个匹配的灯具,查询仍会产生一个包含一个灯具的列表。所以你需要将它映射到一个数组:

$scope.fixtures = $firebaseArray(myFirstFixture);

然后 ng-repeat 在你的视野中 HTML。