[Feature Request] Add where method to find value location
aaronmallen opened this issue · comments
querying objects in locker should query both session, and local unless specified. If I say locker.has('user')
I would expect that to return true if there is an object called 'user' in either the local or session storage.
Example use case:
app.controller('LoginCtrl', [
'$scope', 'locker', function($scope, locker) {
$scope.email = '';
$scope.password = '';
$scope.rememberMe = false;
$scope.signIn = void 0;
$scope.user = {
email: '',
password: ''
};
$scope.rememberMe = false;
return $scope.signIn = function() {
if ($scope.rememberMe) {
return locker.driver('local').put('user', $scope.user);
} else {
return locker.driver('session').put('user', $scope.user);
}
};
}
]);
Here I allow the user to define which locker they use. Specifying driver on locker.put
makes sense, but now later through out my application I either need to create a $rootScope variable to tell me which locker to use or I need to do this all over the place:
if (locker.driver('local').has('user')) {
return locker.driver('local').get('user');
} else {
return locker.get('user');
}
Ideally both locker.has
and locker.get
would query both lockers, unless I specifically say locker.driver('local').has
or locker.driver('local').get
In addition to that you could also add a locker.where()
method that would return the storage that object currently lives in.
locker.where('user')
// response: ['local']
var user = foo
var _user = {name: 'bar', prop: 'foo'}
locker.driver('local').put('user', user)
locker.driver('session').put('user', _user)
locker.where(foo)
// response: ['local']
locker.where({name: 'bar', prop:'foo'})
// response: ['session']
locker.driver('local').put('user', user)
locker.driver('session').put('user', user)
locker.where('user')
// response: ['local', 'session']
Interesting idea.. I can see how this would be useful. I will see if I can throw something together
Thanks
+1