Maison > Questions et réponses > le corps du texte
options.filename = dbPath+'picker';
pickerDB = new Datastore(options);
options.filename = dbPath+'data';
dataDB = new Datastore(options);
options.filename = dbPath+'web';
webDB = new Datastore(options);
options.filename = dbPath+'url';
urlDB = new Datastore(options);
options.filename = dbPath+'attach';
attachDB = new Datastore(options);
options.filename = dbPath+'cacheUrl';
cacheUrlDB = new Datastore(options);
options.filename = dbPath+'cache';
cacheDB = new Datastore(options);
options.filename = dbPath+'cron';
cronDB = new Datastore(options);
options.filename = dbPath+'log';
logDB = new Datastore(options);
options.filename = dbPath+'cronLog';
cronLogDB = new Datastore(options);
请教一下,这一大段,都是复制粘贴。能用更简洁的代码一次搞定吗?
伊谢尔伦2017-04-17 14:59:06
不知道算不算你心中的简写,我觉得从重复的角度看,把不同的部分提取出来做个数组,把相同的部分抽象,如下:
let options = {},
dbPath = ''; //TBD by yourself
let stores = [
'picker',
'data',
'web',
'url',
'attach',
'cacheUrl',
'cache',
'cron',
'log',
'cronLog']
.map(key => (options.filename = dbPath + key, new Datastore(options)));
console.log(stores); //stores you want
PHP中文网2017-04-17 14:59:06
/*
options == ?
dbPath == ?
*/
var _Datastore = {};
_Datastore._opts = options;
_Datastore._path = dbPath;
_Datastore.Create = function(pathAddon){
this._opts.filename = this._path + pathAddon;
return new Datastore(this.options);
};
pickerDB = _Datastore.Create('picker');
dataDB = _Datastore.Create('data');
webDB = _Datastore.Create('web');
urlDB = _Datastore.Create('url');
attachDB = _Datastore.Create('attach');
cacheUrlDB = _Datastore.Create('cacheUrl');
cacheDB = _Datastore.Create('cache');
cronDB = _Datastore.Create('cron');
logDB = _Datastore.Create('log');
cronLogDB = _Datastore.Create('cronLog');
不知道你接下来的代码怎么用?如果后边的逻辑代码好改,可以改成:
var _Datastore = {};
_Datastore._opts = options;
_Datastore._path = dbPath;
_Datastore._cache = {};
_Datastore.Create = function(pathAddon){
this._opts.filename = this._path + pathAddon;
return new Datastore(this.options);
};
_Datastore.DB = function(pathAddon){
this._cache[pathAddon] = this._cache[pathAddon] || this.Create(pathAddon);
return this._cache[pathAddon];
};
//调用 cronLogDB 时 改成
_Datastore.DB('cronLog');
//第一次 会创建,第二次直接用之前创建的实例