【问题标题】:AngularFire check if value exists, if not, create itAngularFire 检查值是否存在,如果不存在,则创建它
【发布时间】:2017-10-22 17:49:13
【问题描述】:

我是 AngularFire 的新手,更新到 AngularFire5 后我遇到了一些问题。我想创建一个“房间”,它有一个 id:name,所以在用户输入名称后,我会检查数据库是否存在此名称,如果不存在,我将创建。我正在添加 InfoMessages 以指定房间是否已创建。

这是我的代码:

checkIfRoomExistAndCreate(salaName: string, puntuacio: number){
    this.items = this.afDB.list("/game/" + salaName).valueChanges();
    this.items.subscribe((x) => {
        if (x.length === 0) {
            this.createNewGame(salaName, puntuacio);
        } else {
            console.log('This room already exists');
        };
    })
}

问题是检查一次是否有同名房间,创建后再次检查并显示错误信息。

那么,我如何告诉 observable 一旦创建就必须停止?

【问题讨论】:

  • createNewGame() 里面有什么
  • 哦抱歉,是推送的来电:this.afDB.list("/game/" + salaName).set("player1", this.player1.name);

标签: angular firebase-realtime-database ionic3 angularfire angularfire5


【解决方案1】:

您可以在插入数据后取消订阅,在 createNewGame 函数中,

this.afDB.list("/game/" + salaName).set("player1", this.player1.name);
this.items.unsubscribe();

【讨论】:

  • 我的项目是 Observable,并尝试 unsubscribe();不作为选项出现。
  • 是的,在这个示例中,有一个像我这样的问题,他们所做的是将订阅保存在一个变量中,然后,这个变量可以被取消订阅。顺便说一句,为什么 angularfire 上没有 .first() 方法?
  • .first() 是什么意思?
猜你喜欢
  • 2011-09-15
  • 1970-01-01
  • 1970-01-01
  • 2017-11-22
  • 1970-01-01
  • 1970-01-01
  • 2014-07-23
  • 2011-05-12
相关资源
最近更新 更多