gpt4 book ai didi

javascript - Firebase:连接表

转载 作者:数据小太阳 更新时间:2023-10-29 05:11:52 26 4
gpt4 key购买 nike

假设数据是这样的

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com