这是一个离子应用程序的功能,可以显示您附近的所有用户..问题是如果用户更改其名称或位置,则会将其作为新项目添加到数组中,而不是更新现有项目...我怎么可能将更新提供给ionic2 ngFor 循环?
public outputUsersCloseToMe() : Observable<Array<displayAllUsers>> {
let availableUsers = <Array<displayAllUsers>>[];
this.firebaseInit().database().ref('users').child(key).child('profile').on('value', (userprofile) => {
if( userprofile.val() ) {
availableUsers.push({
id: userprofile.val().id,
gender: userprofile.val().gender,
distance: distance.toFixed(2),
location: location,
firstName: userprofile.val().firstName,
});
}
});
return Observable.from([availableUsers]).map(val => val);
}
您可以使用映射而不是数组。
let availableUsers = <Map<String,displayAllUsers>> new Map;
您按 id 更新它
availableUsers.set(id, {
id: userprofile.val().id,
gender: userprofile.val().gender,
distance: distance.toFixed(2),
location: location,
firstName: userprofile.val().firstName,
});
仅使用地图中存储的values
创建可观测量
return Observable.from([availableUsers.values()]);