首先,定义你的数据库结构。下面可能是最好的:
groups
<first group> (Firebase-generated ID)
name: "Cat lovers"
users:
user1ID: true
user2ID: true
<second group>
...
我假设当用户点击他想加入的组时,就知道组ID。例如,它可以是select
中option
的value
。
获取组的列表:
groups$ = this.angularFireDatabase.list('groups');
要填充组列表到一个选择:
<select>
<option *ngFor="let group of groups$ | async" [value]="group.$key">
{{group.name}}
</option>
</select>
要创建新组:
groups$.push({name: "Dog lovers"})
的选择(下拉式)将自行更新。在评论的问题
// Define the shape of a group for better type checking.
interface Group { name: string; users: {[userId: string]: boolean;}; }
// Keep local list of groups.
groups$: FirebaseListObservable<Group>;
groups: Group[];
// Keep an updated local copy of groups.
ngOnInit() {
this.angularFireDatabase.list('groups').subscribe(groups => this.groups = groups);
}
function findGroupByName(name) {
return this.groups.find(group => group.name === name);
}
我已经得到了大部分的工作。有没有办法在不打印清单并让他们点击的情况下获得ID?说,用户输入他们想要加入的避难所名称,然后在打字稿中找到基于名称的组,然后抓住它的关键字,然后更新其用户列表? –
FirebaseListObservable不存在find方法。有什么我需要导入? –
我调用'groups'的组和观察组之间存在冲突。我重命名了前面的'groups $'。 – 2017-05-09 06:27:26