Firebase:从另一个对象检索数据

时间:2015-04-10 12:26:35

标签: javascript angularjs firebase

我在Firebase中有两个对象,我试图从users对象中检索一个网址,方法是将其密钥与我user中的messages值匹配1}}对象。

我的数据如下:

{
  "messages" : {
    "-JmY3zLmz9_6MjLRJCch" : {
      "message" : "test",
      "published" : 1428665136553,
      "user" : "twitter:14075704",
      "username" : "realph"
    }
  },
  "users" : {
    "twitter:14075704" : {
      "pic" : "https://pbs.twimg.com/profile_images/1180195102/23684_378330977259_680962259_4275328_5191_n_normal.jpg"
    },
    "twitter:86584100" : {
      "pic" : "https://pbs.twimg.com/profile_images/378800000196615428/dfb3b5fbdc1a260cea977dc3f24262ab_normal.jpeg"
    }
  }
}

我尝试将messages.userusers.key()匹配,以便我可以检索pic值。

app.js

var ref = new Firebase("https://url.firebaseio.com/");
var messagesRef = ref.child('messages');
var usersRef = ref.child('users');
var currentUser = null;

messagesRef.orderByChild("published").on('child_added', function(snap) {
  $scope.messages = $firebaseArray(messagesRef);
  $scope.users = $firebaseArray(usersRef);
});

的index.html

<div ng-repeat="message in messages">
  {{ message.username }}
  {{ message.message }}
  {{ message.user }}
  <img ng-src="IMAGE TO GO HERE" />
</div>

最简单,最好的方法是什么?我此刻难倒。

感谢任何帮助。提前谢谢!

1 个答案:

答案 0 :(得分:0)

由于users是一个对象(它看起来像是由userId键入的字典),因此只需检查该属性即可。您可以使用bracket notation来获取具有字符串变量的对象的属性。这对于具有类字典设置的对象非常有用,因为属性名称是字典的键。

最简单的说,将user字符串转换为图像src的函数如下所示:

$scope.getImage = function (user) {
    var users = $scope.users;
    if (users[user] != null) { //check if the property exists
        return users[user].pic;
    }
    return "No user found";
};

HTML:

<div ng-repeat="message in messages">
    Image src: {{ getImage(message.user)}}
    <img ng-src="{{getImage(message.user)}}" />
</div>

请参阅此plunker