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

标签 javascript angularjs firebase

我在 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.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>

最简单、最好的方法是什么?我现在很困惑。

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

最佳答案

由于 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/

相关文章:

javascript - 使用 AngularJs 从 URL 获取值

java - 删除多个父节点上的特定子节点

node.js - Firebase 云函数说 Unreachable 并且每个 then() 应该返回一个值或抛出 promise/always-return

javascript - 如何在 .append 输入字段上显示来自 DB 的数据

javascript - Webgl FTP错误

javascript - Google Oauth 2 从授权码获取访问 token 和刷新 token

android - 需要始终删除 Firebase 监听器吗?

javascript - 如何检查焦点是否离开一组元素

AngularJS promise 链

javascript - 是否可以将带有函数(proto)的对象存储为cookie?