投稿を表示するたびに特定の投稿に表示されるビューの量を増やすブログシステムを作成しようとしています。私はデータベースのためのfirebaseを使用していると私はポストビューの値を取得するために行くと、それを更新する、それは継続的に値をインクリメントし、私のブラウザをフリーズ..以下は私が持っているコードです..任意の提案?angular2 - 以前の値に基づいて値を更新する
@Component({
templateUrl: './post.html',
styleUrls: ['./post.css']
})
export class Post {
post: any;
constructor(db: AngularFireDatabase, router: Router, route: ActivatedRoute){
route.params.forEach(p => {
let id = p['id'];
if(id != null){
let views = 0;
let postRef: AngularFireObject<any> = db.object('/Posts/'+id);
this.post = postRef.snapshotChanges().subscribe(actions => {
this.post = actions.payload.val();
let v = this.post.views + 1;
postRef.update({
views: v
})
});
}else{
router.navigate(['/']);
}
});
}
}
@ワーキングサンプル 'サブスクリプションと、後でアクションペイロードを持つthis.post'? –
あなたのアプローチも非常に混乱しています。オブジェクトの変更をリッスンしてから、それをインクリメントして、変更イベントをトリガします。 –
各パラメータで "id"をチェックしています。これを "this"に変更してください。 route.snapshot.params ['id']、あなたの最初のパラメータがidでない場合、現在のコードは無限ループに入ります – pjobs