mysql.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. 'use strict';
  2. const { CrudService } = require('naf-framework-mongoose-free/lib/service');
  3. const { BusinessError, ErrorCode } = require('naf-core').Error;
  4. const _ = require('lodash');
  5. const assert = require('assert');
  6. // mysql数据库操作,针对单表
  7. class MysqlService extends CrudService {
  8. constructor(ctx) {
  9. super(ctx, 'mysql');
  10. this.db = this.app.mysql;
  11. }
  12. async create(table, data) {
  13. const res = await this.db.insert(table, data);
  14. return res;
  15. }
  16. async delete(table, query = {}) {
  17. const res = await this.db.delete(table, query);
  18. return res;
  19. }
  20. async updateById(table, id, data) {
  21. const res = await this.db.update(table, { ...data, id });
  22. return res;
  23. }
  24. async query(table, query = {}, { skip, limit, sort = [], desc } = {}) {
  25. const queryParams = {};
  26. if (_.isNumber(skip) || _.isNumber(parseInt(skip))) queryParams.offset = skip;
  27. if (_.isNumber(limit) || _.isNumber(parseInt(limit))) queryParams.limit = limit;
  28. if (sort) {
  29. const orders = [];
  30. for (const s of sort) {
  31. const item = [ s, desc ? 'desc' : 'asc' ];
  32. orders.push(item);
  33. }
  34. }
  35. const data = await this.db.select(table, { where: query, ...queryParams });
  36. const total = await this.db.count(table, query);
  37. return { data, total };
  38. }
  39. async fetch(table, query) {
  40. const data = await this.db.get(table, query);
  41. return data;
  42. }
  43. }
  44. module.exports = MysqlService;