2016-06-13 2 views
0

J'essaie d'ajouter une fonctionnalité de connexion unique dans une application réag-native. J'utilise le domaine pour la persistance des données. Il fonctionne bien avec le processus de connexion et stocke les données lorsque l'utilisateur se connecte en premier temps. Mais je veux supprimer l'objet utilisateur du stockage local lorsque je clique sur le bouton de déconnexion dans le coin supérieur droit du navigateur.Impossible de supprimer l'objet de domaine sur l'action clic droit de NavigatorIOS

home screen

Je reçois une exception Invalid arguments lorsque je tente de supprimer l'objet utilisateur du stockage de domaine dans l'événement onRightButtonPress. Voici le code de cet événement dans NavigatorIOS.

<NavigatorIOS 
    barTintColor="#000000" 
    tintColor="#fff" 
    titleTextColor="#fff" 
    ref={(ref) => this._navigator = ref} 
    style={{flex: 1,backgroundColor: '#fff'}} 
    initialRoute={{ 
     title: 'NOOZOO', 
     component: Home, 
     leftButtonIcon: require('../images/menu.png'), 
     onLeftButtonPress:() => { this._drawer.open() }, 
     rightButtonTitle: 'Logout', 
     onRightButtonPress:() => {alert('Logout'); 
            console.log({name: global.__user.name,token: global.__user.token}); 
            var users = realm.objects('User'); 
            console.log(users.length); 
            console.log(users[0].isValid()); 
            realm.write(()=>{ 
            realm.delete('User', users[0]); 
            }); 
            console.log('deleted'); 
            this._navigate({'title':'Company','routeName':'Home','active':false,'iconUrl': require('../images/check.png'),'newView':false}); 

            console.log(users); 
            }, 
    }}/> 

J'imprime des valeurs aux consoles afin de vérifier si domaine est accessible et avoir un objet dans le stockage, ce qui semble bien que dans l'image suivante.

Console output when Logout is pressed

Je ne sais pas si je fais quelque chose de mal avec l'appel ou quelque chose de la méthode de domaine. J'ai vu les docs pour le domaine et j'ai lu le problème à propos de github mais je n'ai pas pu résoudre ce problème. Toute aide serait appréciée.

Répondre

1

L'appel à supprimer ne prend pas le type d'objet comme premier argument. Essayez de changer cette ligne à ceci:

realm.delete(users[0]); 
+0

cette solution a fonctionné mais je me demande comment le domaine déduit automatiquement basé sur l'objet sans le dire au sujet de la collection. –

+0

Puisque l'objet est créé à partir de Royaume, nous pouvons dire quel type d'objet il est et le supprimer de façon appropriée. – Ari

+0

de votre réponse, nous ne mentionnons pas explicitement le type d'objet est «utilisateur». –