Comment puis-je supprimer ou supprimer des variables de Session?
Météore a une Session qui fournit un objet global sur le client que vous pouvez utiliser pour stocker l'arbitraire d'un ensemble de paires clé-valeur. L'utiliser pour stocker des choses comme l'élément actuellement sélectionné dans une liste.
Il prend en charge la Session.ensemble, Session.obtenir et de Session.d'égal à égal.
Comment puis-je supprimer un nom de la Session, la valeur de la paire? Je ne peux pas trouver une Session.supprimer(nom) ?
Vous devez vous connecter pour publier un commentaire.
[note: cette réponse est pour Meteor 0.6.6.2 à travers au moins 1.1.0.2]
[edit: mise à jour d'expliquer aussi comment le faire tout en ne pas casser de réactivité. Grâce à @DeanRadcliffe, @AdnanY, @TomWijsman, et @MikeGraf !]
Les données sont stockées à l'intérieur de
Session.keys
, qui est tout simplement un objet, de sorte que vous pouvez supprimer manuellement clés:Pour supprimer toutes les clés, vous pouvez tout simplement créer un objet vide pour
Session.keys
:C'est la façon la plus simple. Si vous voulez vous assurer que tout réactif dépendances sont traitées correctement, assurez-vous de faire quelque chose comme ce que @dean-radcliffe suggère dans le premier commentaire. Utilisation
Session.set()
pour définir les touches de pas défini d'abord, puis de les supprimer manuellement. Comme ceci:Il y aura encore quelques restes de la chose en
Session.keyDeps.foo
etSession.keyValueDeps.foo
, mais qui ne devraient pas obtenir de la manière.Session
et de manipuler des clés directement. Vous pouvez cependant l'utiliser pour chaque nom de la clé:Object.keys(Session.keys).forEach(function(key){ Session.set(key, undefined); })
Session.set('name', undefined)
ouSession.set('name', null)
devrait fonctionner.Session.get('name')
retour indéfini ou null. Je pense que quandSession.get('name')
a pas encore été utilisé, il serait de retour non défini ainsi. Je ne vois pas la nécessité de réellement supprimer la variable, au moins pas dans un réactif contexte. Pour les non-réactif de stockage, vous devriez probablement utiliser quelque chose comme amplifier (persistant) ou juste une partie variable (temporaire).Session.set('a', 'a'); Session.set('a', undefined); Session.setDefault('a', 'b'); Session.get('a'); => undefined
Ladelete Session.keys.a
solution ne souffre pas de ce problème. (actuellement des tests avec la version 7.2.x )L'inconvénient avec l'aide de la suppression de la Session.les touches['foo'], c'est que votre modèle ne fera pas chaud recharger si la clé de session est titulaire d'un tableau. Par exemple, si vous faites
et dans votre modèle
Et des catégories est un tableau, si vous supprimez la clé de session, votre modèle continuera à afficher la dernière valeur de catégories.