【问题标题】:Firebase: Retrieving Data from Another ObjectFirebase:从另一个对象检索数据
【发布时间】:2015-04-10 12:26:35
【问题描述】:

我在 Firebase 中有两个对象,我正在尝试通过将其键与我的 messages 对象中的 user 值匹配来从 users 对象中检索一个 url。

我的数据如下所示:

{
  "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>

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

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

【问题讨论】:

    标签: javascript angularjs firebase


    【解决方案1】:

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

    【讨论】:

    • 这很好,但它一直返回“未找到用户”。不知道我在这里做错了什么。有些东西告诉我我无法公开pic,因为我没有提取 Firebase 快照...
    • 这很奇怪。该属性可能确实存在但“空”。也许更改为if (users[user]) 会有所帮助。如果没有,您将不得不进行更多调试,并找出调用该函数时您的 $scope.usersuser 的样子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-06
    • 1970-01-01
    • 1970-01-01
    • 2020-11-28
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多