断开后重新连接时离子DB无效的握手



(在浏览器中使用离子服务)当用户登录我的应用程序时,创建了与数据库的连接,并且使用其ID插入了一些初步数据。这很好。问题出现了,如果您注销然后再次注册,当它试图再次连接时,它说:

"Connection Failed:  Invalid handshake."

如果我注销并刷新应用程序,然后注册,则可以正常运行。我认为auth或数据库提供商中的某些内容是从注销之前从中持有的值,这就是为什么连接在新用户上失败的原因。我查看了Chrome Dev中的本地存储空间,除了登录时,清除了" Ionic_insights_session"以外的所有内容。所以我不知道问题是什么。一些代码片段适合您:

用户注册时:

this.auth.signup(details).then(() => {
    this.auth.login('basic', details).then(() => {
      this.db.connect();
      this.doneLoading();
      this.navCtrl.setRoot(GuidePage, {'justSignedUp': true}, {'animate': true, 'direction': 'forward'})
    }, err => {
      this.doneLoading();
      this.showErrPopup("Check your internet connection");
    });
}

这将它们发送到指南页面:

ionViewDidLoad() {
  if (this.navParams.data.justSignedUp) {
    var points = this.db.collection("points");
    points.insert({
      id: this.user.id,
      points: 9000
    });
  }
}

最后注销:

logout() {
  this.auth.logout();
  this.db.disconnect();
  this.navCtrl.setRoot(StartPage, null, {'animate': true, 'direction': 'back'});
}

如前所述,如果我注销,然后刷新浏览器,则可以正常工作。任何帮助都很棒欢呼

我也有同样的问题,我们可能会过早地称呼获取或发布数据的功能,我正在努力。我认为我们可以使用承诺功能来管理这一点。

我想我的登录过程需要一些时间,因此我编写一个函数来检测用户何时登录。

login() {
  let checkStatus = new Promise((resolve, reject)=>{
    Observable.interval(500).subscribe(()=>{
      if(this.auth.isAuthenticated()){ //Check every 500 ms the auth status
        resolve();
        }
      })
    });
    checkStatus.then(()=>{
       this.db.connect();
    });
}

还记住要导入osservable

import {Observable} from 'rxjs/Rx';

在您的代码中,您必须调用此功能,而不是this.db.connect()

看起来IonicDB已不复存在。所以我想这不再是问题!

相关内容

  • 没有找到相关文章

最新更新