'use strict'; const { Service } = require('ee-core'); const Storage = require('ee-core/storage'); const _ = require('lodash'); const path = require('path'); /** * json数据存储 * @class */ class JsondbService extends Service { constructor (ctx) { super(ctx); // jsondb数据库 this.jsonFile = 'demo'; this.demoDB = Storage.connection(this.jsonFile); this.demoDBKey = { test_data: 'test_data' }; } /* * 增 Test data */ async addTestData(user) { const key = this.demoDBKey.test_data; if (!this.demoDB.db.has(key).value()) { this.demoDB.db.set(key, []).write(); } const data = this.demoDB.db .get(key) .push(user) .write(); return data; } /* * 删 Test data */ async delTestData(name = '') { const key = this.demoDBKey.test_data; const data = this.demoDB.db .get(key) .remove({name: name}) .write(); return data; } /* * 改 Test data */ async updateTestData(name= '', age = 0) { const key = this.demoDBKey.test_data; const data = this.demoDB.db .get(key) .find({name: name}) // 修改找到的第一个数据,貌似无法批量修改 todo .assign({age: age}) .write(); return data; } /* * 查 Test data */ async getTestData(age = 0) { const key = this.demoDBKey.test_data; let data = this.demoDB.db .get(key) //.find({age: age}) 查找单个 .filter(function(o) { let isHas = true; isHas = age === o.age ? true : false; return isHas; }) //.orderBy(['age'], ['name']) 排序 //.slice(0, 10) 分页 .value(); if (_.isEmpty(data)) { data = [] } return data; } /* * all Test data */ async getAllTestData() { const key = this.demoDBKey.test_data; if (!this.demoDB.db.has(key).value()) { this.demoDB.db.set(key, []).write(); } let data = this.demoDB.db .get(key) .value(); if (_.isEmpty(data)) { data = [] } return data; } /* * get data dir (sqlite) */ async getDataDir() { const dir = this.demoDB.getStorageDir(); return dir; } /* * set custom data dir (sqlite) */ async setCustomDataDir(dir) { if (_.isEmpty(dir)) { return; } // the absolute path of the db file const dbFile = path.join(dir, this.jsonFile); this.demoDB = Storage.connection(dbFile); return; } } JsondbService.toString = () => '[class JsondbService]'; module.exports = JsondbService;