我在 Firebase 中有两个对象,我正在尝试通过将其键与我的 user
值相匹配来从 users
对象检索网址。 消息
对象。
我的数据如下所示:
{
"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.user
与 users.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>
最简单、最好的方法是什么?我现在很困惑。
感谢任何帮助。提前致谢!
最佳答案
由于 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
关于javascript - Firebase:从另一个对象检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29561426/