mirror of
https://github.com/node-red/node-red
synced 2024-11-23 08:59:13 +00:00
Improve context storage handling
This commit is contained in:
parent
cce7ac09d0
commit
40ff54f67e
@ -22,7 +22,7 @@ var settings;
|
||||
var contexts = {};
|
||||
var globalContext = null;
|
||||
var externalContexts = {};
|
||||
var noContextStorage = false;
|
||||
var noContextStorage = true;
|
||||
|
||||
function init(_settings) {
|
||||
settings = _settings;
|
||||
@ -96,9 +96,7 @@ function copySettings(config, settings){
|
||||
}
|
||||
|
||||
function getContextStorage(storage) {
|
||||
if (noContextStorage || !storage) {
|
||||
return externalContexts["_"];
|
||||
} else if (externalContexts.hasOwnProperty(storage)) {
|
||||
if (externalContexts.hasOwnProperty(storage)) {
|
||||
return externalContexts[storage];
|
||||
} else if (externalContexts.hasOwnProperty("default")) {
|
||||
return externalContexts["default"];
|
||||
@ -114,29 +112,52 @@ function createContext(id,seed) {
|
||||
var obj = seed || {};
|
||||
|
||||
obj.get = function(key, storage, callback) {
|
||||
var context;
|
||||
if (!storage && !callback) {
|
||||
context = externalContexts["_"];
|
||||
} else {
|
||||
if (typeof storage === 'function') {
|
||||
callback = storage;
|
||||
storage = "default";
|
||||
} else if(typeof storage === "string" && typeof callback !== 'function'){
|
||||
}
|
||||
if (typeof callback !== 'function'){
|
||||
throw new Error("Callback must be a function");
|
||||
}
|
||||
return getContextStorage(storage).get(scope, key, callback);
|
||||
context = getContextStorage(storage);
|
||||
}
|
||||
return context.get(scope, key, callback);
|
||||
};
|
||||
obj.set = function(key, value, storage, callback) {
|
||||
var context;
|
||||
if (!storage && !callback) {
|
||||
context = externalContexts["_"];
|
||||
} else {
|
||||
if (typeof storage === 'function') {
|
||||
callback = storage;
|
||||
storage = "default";
|
||||
}
|
||||
getContextStorage(storage).set(scope, key, value, callback);
|
||||
};
|
||||
obj.keys = function(storage, callback) {
|
||||
if (typeof storage === 'function') {
|
||||
callback = storage;
|
||||
storage = "default";
|
||||
} else if(typeof storage === "string" && typeof callback !== 'function'){
|
||||
if (callback && typeof callback !== 'function') {
|
||||
throw new Error("Callback must be a function");
|
||||
}
|
||||
return getContextStorage(storage).keys(scope, callback);
|
||||
context = getContextStorage(storage);
|
||||
}
|
||||
context.set(scope, key, value, callback);
|
||||
};
|
||||
obj.keys = function(storage, callback) {
|
||||
var context;
|
||||
if (!storage && !callback) {
|
||||
context = externalContexts["_"];
|
||||
} else {
|
||||
if (typeof storage === 'function') {
|
||||
callback = storage;
|
||||
storage = "default";
|
||||
}
|
||||
if (typeof callback !== 'function') {
|
||||
throw new Error("Callback must be a function");
|
||||
}
|
||||
context = getContextStorage(storage);
|
||||
}
|
||||
return context.keys(scope, callback);
|
||||
};
|
||||
return obj;
|
||||
}
|
||||
|
@ -263,7 +263,7 @@ describe('context', function() {
|
||||
Context.init({contextStorage:{_:{module:testPlugin}}});
|
||||
Context.load().then(function(){
|
||||
var context = Context.get("1","flow");
|
||||
var cb = function(){done("An error occurred")}
|
||||
var cb = function(){}
|
||||
context.set("foo","bar","_",cb);
|
||||
context.get("foo","_",cb);
|
||||
context.keys("_",cb);
|
||||
|
Loading…
Reference in New Issue
Block a user