0.2.16 • Published 4 years ago

chestnut-utils v0.2.16

Weekly downloads
4
License
MIT
Repository
github
Last release
4 years ago

chestnut-utils KOA2工具类

配合chestnut-app使用,也可单独在Koa2中使用

特别注意:

由于oracle使用环境复杂,依赖包未添加到工程中,如需使用oracle数据库请单独安装依赖包

具体请参考https://oracle.github.io/node-oracledb/INSTALL.html#quickstart

配置后请执行

npm install oracledb

提供的方法

数据库操作类

require('chestnut-utils').db

// 首次调用初始化,初始化mysql
const dbmysql = require('chestnut-utils').db({
	id: 'main',
    type: 'mysql',
    database: 'test',
    user: 'root',
    password: 'root',
    port: '3306',
    host: 'localhost'
});

// 初始化pgsql
const dbpg = require('chestnut-utils').db({
    id: 'pg',
    type: "pgsql",
    host: "localhost",
    port: "5432",
    database: "test",
    user: "postgres",
    password: "postgres"
  });


// 后续再次调用可只传id
const db = require('chestnut-utils').db('main');

db类提供query、find、insert、update、delete函数进行操作,这几个函数均返回promise对象。

query(sql, values)

其中:

sql为可带?的sql语句,比如:select * from table where username=? and age=?

values为sql语句中?对应的数组参数,比如:'nandy007', '18'

此方法返回一个promise对象

示例:

const db = require('chestnut-utils').db('main');
const rs = await db.query('select activity_id, activity_name from tbl_activity_main where activity_id = ? AND activity_name = ? ', ['4','444']

find(table, keys, clause, values)

其中:

table为查找的表名

keys为要查找的字段

clause为条件语句,可包含?

values为条件语句中?对应的参数

const db = require('chestnut-utils').db('main');

// 序列化为 select id,title from article_info where id=1 and title='2'
let rs = await db.find('article_info',['id','title'],{id:1, title:'2'});

// 序列化为 select activity_id,activity_name from tbl_activity_main where activity_id='4' and activity_name='444'
rs = await db.find('tbl_activity_main', ['activity_id', 'activity_name'], '  where ? ', [{activity_id:'4',activity_name:'444'}]);

insert(table, model)

其中:

table为插入的表名

model为插入的数据对象

const db = require('chestnut-utils').db('main');

// 序列化为 insert into tbl_activity_main (activity_id, activity_name) values ('4', '444')
let rs = await db.insert('tbl_activity_main', {activity_id:'4', activity_name:'444'});

update(table, clause, values)

其中:

table为更新的表名

clause为更新的条件,可带?

values为条件需要的对应参数

const db = require('chestnut-utils').db('main');

// 序列化为 update tbl_activity_main set activity_name='333' where activity_id='3'
let rs = await db.update('tbl_activity_main',' ? where ? ', [{activity_name:'333'}, {activity_id:'3'}]);

delete(table, clause, values)

其中:

table为删除的表名

clause为删除的条件,可带?

values为条件需要的参数

const db = require('chestnut-utils').db('main');

// 序列化为 delete from tbl_activity_main where activity_id=2 OR activity_id=4
let rs = await db.delete('tbl_activity_main', ' where ? activity_id=? OR activity_id=?', [null,2,4]);

页面抓取类

require('chestnut-utils').fetch

此类基于https://github.com/request/request

fetch (url, opts)

其中:

url为要请求的url

opts为请求参数,可参考https://github.com/request/request中的options,同时添加了两个属性:

ctx 为koa的ctx,用户标识当前请求的会话,相同的会话发起的fetch请求的cookie是维持的

requestId 默认为请求的url的host部分,可以自己设置(某些url使用会话共享,不同host的会话一致,可以给它们设置相同的requestId解决)

cookies 为请求设置自定义cookie,形式可以是数组和对象。 数组形如:cookies: cookie1, cookie2 // cookie值为字符串形如cookieName=cookieValue 对象形如:cookies: {cookieName1: cookieValue1, cookieName2: cookieValue2}

exports.index = async (ctx) => {
	const fetch = require('chestnut-utils').fetch;
	let rs = await fetch('https://auth.exmobi.cn/login?output=json', {
      	ctx: ctx,
      	requestId: 'exmobi',
      	method: 'post',
      	form: {username:'huangnan', password:'111111'},
      	headers: {
        	'Content-Type': 'application/x-www-form-urlencoded'
      	}
    });
	console.log(rs.body);
}

fetch.clear(sids)

用于根据会话id删除缓存,sids为一个数组,其元素为会话id

html页面拣选类

require('chestnut-utils').jqlite

此类基于cheerio实现,语法类似jquery

用法:

const html = '<div><ul id="ul1"><li>1</li><li>2</li><li>3</li></ul><ul id="ul2"><li>4</li><li>5</li><li>6</li></ul></div>';

const jqlite = require('chestnut-utils').jqlite;
const $ = jqlite(html);

const lis = $('#ul2 li');

编解码类

require('chestnut-utils').codec

此类封装了基于crypto模块的一些编解码功能

aesCipher(str, key)

aes编码。

const codec = require('chestnut-utils').codec;

const ret = codec.aesCipher('这是明文内容', 'a password');// 将明文信息进行aes编码

aesDecipher(str, key)

aes解码。

const codec = require('chestnut-utils').codec;

const ret = codec.aesDecipher('这是aes加密内容', 'a password');// 将加密信息解码,得到明文

md5(str)

md5编码。

const codec = require('chestnut-utils').codec;

const ret = codec.md5('这是明文内容');// 将明文信息进行md5编码
0.2.16

4 years ago

0.2.15

4 years ago

0.2.14

5 years ago

0.2.13

5 years ago

0.2.12

5 years ago

0.2.11

5 years ago

0.2.10

5 years ago

0.2.9

5 years ago

0.2.8

5 years ago

0.2.7

5 years ago

0.2.6

6 years ago

0.2.5

6 years ago

0.2.4

6 years ago

0.2.3

6 years ago

0.2.2

7 years ago

0.2.1

7 years ago

0.2.0

7 years ago

0.1.5

7 years ago

0.1.4

7 years ago

0.1.3

7 years ago

0.1.2

7 years ago

0.1.1

7 years ago

0.1.0

7 years ago

0.0.2

7 years ago

0.0.1

7 years ago