我正在尝试在ionic 2中实现用户喜欢/不喜欢功能。该想法只是单击“喜欢”按钮以切换“喜欢/不喜欢”状态。

likeItem(itemId) {
let objRef = this.af.database.object('userItemCollection/'+this.userId+'/items/'+itemId);
objRef.subscribe(snapshot => {
  if(snapshot.$value) {
    objRef.remove();
  } else {
    objRef.set(true);
  }
});
}


但是,一旦单击“赞”按钮并触发该功能,便可以在Firebase控制台中看到,它将向数据库添加许多记录。我不确定哪里出问题了。

最佳答案

您可以使用Observable take方法来做到这一点:

import {Observable} from 'rxjs/Rx';
import 'rxjs/add/operator/take'

likeItem(itemId) {
    let objRef = this.af.database.object('/item/itemId', { preserveSnapshot: true })
    objRef.take(1)
    .subscribe(snapshot => objRef.set({like: !snapshot.val().like}))
}


我希望这能解决您的问题:)

09-18 14:04