我正在尝试找到使用RTDB在Firebase中存储和检索带有评论的帖子列表的最佳方法(不是Firestore,因为该项目已经进行了一段时间)。
有人建议将用户名直接存储在帖子中并发表评论,但我担心他们有时会更改其信息。另外,我想显示其他信息(信誉,会员身份等)。
我的想法是查询每个用户并将对象存储在关联数组中。因此,第一次出现UID 1234时,代码将检查该数组,如果不存在,它将从数据库中查询它。
users = {};
getUser( uid ){
return new Promise( (resolve, reject ) =>{
if( this.users && this.users[ uid ] ){
resolve( this.users[ uid ] );
} else {
this.angular.object('users/'+uid ).snapshotChanges().take(1).subscribe( data =>{
const user = data.payload.val();
if( user ){
this.users[ uid ] = user;
resolve( user );
} else {
reject();
}
});
}
});
}
如果页面上有100个用户和评论,我想知道这是否效率低下?而且对于Firebase之类的查询是否太多了?