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 = ''; // 自分で未定
let ストア = [
「ピッカー」、
'データ'、
'ウェブ'、
「URL」、
「添付」、
'キャッシュURL',
'キャッシュ'、
「クロン」、
'ログ'、
「cronログ」]
.map(key => (options.filename = dbPath + key, new Datastore(options)));
console.log(stores); // 必要なストア
PHP中文网2017-04-17 14:59:06
/*
オプション==?
dbPath == ?
*/
var _Datastore = {};
_Datastore._opts = オプション;
_Datastore._path = dbPath;
_Datastore.Create = function(pathAddon){
this._opts.filename = this._path + pathAddon;
新しいデータストア(this.options)を返します;
};
pickerDB = _Datastore.Create('picker');
dataDB = _Datastore.Create('data');
webDB = _Datastore.Create('web');
urlDB = _Datastore.Create('url');
attachDB = _Datastore.Create('attach');
acheUrlDB = _Datastore.Create('cacheUrl');
キャッシュDB = _Datastore.Create('キャッシュ');
cronDB = _Datastore.Create('cron');
logDB = _Datastore.Create('log');
cronLogDB = _Datastore.Create('cronLog');
次のコードの使用方法がわかりません。背後にあるロジック コードが簡単に変更できる場合は、次のように変更できます。
var _Datastore = {};
_Datastore._opts = オプション;
_Datastore._path = dbPath;
_Datastore._cache = {};
_Datastore.Create = function(pathAddon){
this._opts.filename = this._path + pathAddon;
新しいデータストア(this.options)を返します;
};
_Datastore.DB = 関数(パスアドオン){
this._cache[pathAddon] = this._cache[pathAddon] || this.Create(pathAddon);
これを返します。_cache[pathAddon];
};
// cronLogDB を呼び出すときに、次のように変更します。
_Datastore.DB('cronLog');
// 初めて作成され、以前に作成されたインスタンスが 2 回目に直接使用されます