2017-02-20 4 views
1

(ИСПОЛЬЗОВАНИЕ IONIC SERVE IN BROWSER) Когда пользователь регистрируется в моем приложении, создается соединение с базой данных, и некоторые предварительные данные вставляются с их идентификатором. Это прекрасно работает. Проблема возникает, если вы выйдите из системы и затем снова зарегистрироваться, когда он пытается подключиться снова он говорит:Недействительное рукопожатие IonicDB при повторном подключении после отсоединения

"Connection Failed: Invalid handshake." 

Если я выйти и обновить приложение, а затем подписать то работает нормально. Я думаю, что что-то в поставщиках Auth или Database держит значение до выхода из системы, поэтому подключение к новому пользователю не выполняется. Я посмотрел на локальное хранилище в 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'}); 
} 

Как указано выше, если я выхожу из системы и обновляю браузер, он работает нормально. Любая помощь будет замечательной Cheers

ответ

0

Похоже, что IonicDB больше не существует. Так что это уже не проблема, я думаю!

+0

Технически, правильный ответ. Лучший вид правильного :) –

0

У меня такая же проблема, возможно, мы слишком быстро вызываем функцию, которая получает или публикует данные, я над этим работаю. Я думаю, мы справимся с этим, используя функцию Promise.

+0

Дайте мне знать, как вы поживаете. Я пробовал подключать и отключать функции в разных местах по-прежнему с той же проблемой – mab3103

+0

Извините, что я выражаю плохо ... Я думаю, что мы слишком рано пытаемся подключиться к удаленной базе данных. –

0

Я полагаю, что процесс Войти в Ионическом Облако занять некоторое время, так что я пишу функцию, чтобы определить, когда пользователь вошел в систему.

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()

+0

Я посмотрю завтра и посмотрю, как это работает. Спасибо за ответы! – mab3103

Смежные вопросы