javascript - Firebase:连接表

标签 javascript firebase firebase-realtime-database

假设数据是这样的

post: {
  authorId: '123AA',
  title: 'first Post',
  body: 'yay'
}

author: {
  uid: '123AA',
  displayName: 'Richard'
  email: 'im@richard.com'
}

我想渲染一个带有作者姓名的帖子:

<div className="post">
  <div className="title">{post.title}</div>
  <div className="body">{post.body}</div>
  <div className="author-name">{post.author.displayName}</div> //problem
</div>

获取的帖子项目仅包含作者的 uid,但我需要作者的 displayName。检索帖子时如何填充作者字段?这是我现在用来获取帖子的方法:

const postsRef = firebase.database().ref('posts/')
postsRef.on('value', (snapshot) => {
  this.setState({posts: snapshot.val()})
})

最佳答案

在真正的 firebase 中不确定,但我在 angular2 中经常使用 join。这是我的示例代码。

import { Component, OnInit } from '@angular/core';
import { AngularFire } from 'angularfire2';
import { Observable } from 'rxjs/Observable'; 
import 'rxjs/add/operator/map';

@Component({
  selector: 'app',
  templateUrl: `
    <ul>
        <li *ngFor="let p of posts | async">
            {{ p.title }} - {{ (p.authorName | async)?.displayName }}
        </li>        
    </ul>
`
})
export class InitComponent implements OnInit {
    posts: Observable<any[]>;

  constructor(private af: AngularFire) {}

  ngOnInit() {
      this.posts = this.af.database.list('/posts')
      .map(posts => {
          posts.map(p => {
              p.authorName = this.af.database.object('/authors/'+p.authorId);
          });
          return posts;
      });
  }

数据库结构如下:

/posts/postId/{authorId, title, body}
/authors/authorId/{displayName, email}

希望对你有帮助

关于javascript - Firebase:连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38789299/

相关文章:

iOS/swift : How to manage image downloading from Firebase in a feed

android - FirebaseInstanceId : Token retrieval failed: SERVICE_NOT_AVAILABLE

swift - 将 Firebase 快照数组保存到 NSUserDefaults

android - Firebase 的 MVC 模式

javascript - 通过子跨度搜索特定类获取 Xpath 的父级

javascript - 对位于另一个单独范围内的范围求和的算法

ios - Firebase 通知在 Testflight 上不起作用

firebase - 注册 Apple - Firebase - Angular Web JavaScript

javascript - ExtJS checkcolumns 修改模型后无法编辑

javascript - 谷歌图表堆叠栏在 onclick 时获取键名