Meteor has a Session that provides a global object on the client that you can use to store an arbitrary set of key-value pairs. Use it to store things like the currently selected item in a list.
It supports Session.set, Session.get and Session.equals.
How do I delete a Session name, value pair? I can't find a Session.delete(name) ?
A PHP session can be destroyed by session_destroy() function. This function does not need any argument and a single call can destroy all the session variables. If you want to destroy a single session variable then you can use unset() function to unset a session variable.
Which function is used to erase all session variables stored in the current session? Explanation: The function session_unset() frees all session variables that is currently registered.
Session_destroy() function is used to destroy a session. This function destroys the complete session. To unset a single session variable, we can use the unset() function.
Session variables on the client are read-only. They cannot be modified.
[note: this answer is for Meteor 0.6.6.2 through at least 1.1.0.2]
[edit: updated to also explain how to do this while not breaking reactivity. Thanks to @DeanRadcliffe, @AdnanY, @TomWijsman, and @MikeGraf !]
The data is stored inside Session.keys
, which is simply an object, so you can manually delete keys:
Session.set('foo', 'bar') delete Session.keys['foo'] console.log(Session.get('foo')) // will be `undefined`
To delete all the keys, you can simply assign an empty object to Session.keys
:
Session.set('foo', 'bar') Session.set('baz', 'ooka!') Session.keys = {} console.log(Session.get('foo')) // will be `undefined` console.log(Session.get('baz')) // will be `undefined`
That's the simplest way. If you want to make sure that any reactive dependencies are processed correctly, make sure you also do something like what @dean-radcliffe suggests in the first comment. Use Session.set()
to set keys to undefined first, then manually delete them. Like this:
// Reset one value Session.set('foo', undefined) delete Session.keys.foo // Clear all keys Object.keys(Session.keys).forEach(function(key){ Session.set(key, undefined); }) Session.keys = {}
There will still be some remnants of the thing in Session.keyDeps.foo
and Session.keyValueDeps.foo
, but that shouldn't get in the way.
Session.set('name', undefined)
or Session.set('name', null)
should work.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With