【问题标题】:How to call method inside .subscribe?如何在.subscribe 中调用方法?
【发布时间】:2019-09-14 08:53:57
【问题描述】:

我正在试用 Angular8 和 Google Firestore。当成员是经过身份验证的用户时,我想添加一些有关“成员”的附加信息。但是,我只喜欢在成员文档不存在的情况下这样做。为此,我使用附加的代码。问题是无法从我希望调用它的位置调用 addMember 方法(请参阅附加代码)。这给出了这个错误:“ERROR TypeError: this.addMember is not a function”。

如果将 addMember 放置在“.subscribe(function (doc) {”的“外部”,则可以毫无问题地调用它。

这是为什么?任何有关解决此问题的建议都会被采纳。


createMember() {
    alert(this.member.email);
    var docRef = this.db.collection("member").doc(this.member.orgId + '_' + this.member.email);


    docRef.get().subscribe(function (doc) {
      if (doc.exists) {
        console.log("Document data: ", doc.data());
      } else {
        this.addMember();
        //console.log('No such document! -> Add Member');
        // doc.data() will be undefined in this case

      }

    });

}

addMember(){
      this.userService.addMember(this.member)
        .then(res => {
          alert('Success!');
        });
  }

【问题讨论】:

    标签: javascript firebase google-cloud-firestore angularfire2


    【解决方案1】:

    您可以使用参数,例如self

    let self = this;
    docRef.get().subscribe(function (doc) {
          if (doc.exists) {
            console.log("Document data: ", doc.data());
          } else {
            self.addMember();
            //console.log('No such document! -> Add Member');
            // doc.data() will be undefined in this case
    
          }
    
    });
    

    【讨论】:

    • 或者只使用箭头函数subscribe((data) => { this.addMember();});
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    相关资源
    最近更新 更多