(在浏览器中使用IONIC SERVE)当用户注册我的应用程序时,会创建与数据库的连接,并插入一些初步数据及其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'});
}
如前所述,如果我注销然后刷新浏览器,它可以正常工作。任何帮助都会很棒 干杯
答案 0 :(得分:0)
我遇到了同样的问题,可能我们过早地调用了获取或发布数据的函数,我正在研究它。我想我们可以通过使用Promise函数来管理它。
答案 1 :(得分:0)
我认为Ionic Cloud的登录过程需要一些时间,因此我编写了一个函数来检测用户何时登录。
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()
答案 2 :(得分:0)
看起来IonicDB已不复存在。所以这不再是我想的问题了!