up
This commit is contained in:
+31
-3
@@ -6,7 +6,7 @@ module.exports = {
|
|||||||
method : ["get", "post"],
|
method : ["get", "post"],
|
||||||
middleware: [],
|
middleware: [],
|
||||||
params : {
|
params : {
|
||||||
"age": "int"
|
"age": "int?"
|
||||||
},
|
},
|
||||||
return : {},
|
return : {},
|
||||||
controller: async (ctx, app) => {
|
controller: async (ctx, app) => {
|
||||||
@@ -19,7 +19,7 @@ module.exports = {
|
|||||||
// const {count, rows} = await app.table("User").where(where).findAndCountAll()
|
// const {count, rows} = await app.table("User").where(where).findAndCountAll()
|
||||||
// const User = await app.table("User").save(data)
|
// const User = await app.table("User").save(data)
|
||||||
// const res = {
|
// const res = {
|
||||||
// "创建单个数据" : await app.table("User").data({uid: "6666"}).save(),
|
// // "创建单个数据" : await app.table("User").data({uid: "6666"}).save(),
|
||||||
// "查询单个数据" : await app.table("User").where({id: 2}).find(),
|
// "查询单个数据" : await app.table("User").where({id: 2}).find(),
|
||||||
// "查询单个数据,不存在就创建" : await app.table("User").where({id: 999}).data({uid: "6666"}).findOrCreate(),
|
// "查询单个数据,不存在就创建" : await app.table("User").where({id: 999}).data({uid: "6666"}).findOrCreate(),
|
||||||
// "查询所有数据" : await app.table("User").where({uid: "6666"}).findAll(),
|
// "查询所有数据" : await app.table("User").where({uid: "6666"}).findAll(),
|
||||||
@@ -49,7 +49,35 @@ module.exports = {
|
|||||||
// const res = await app.table("User").data("age").max() // 查询最大值
|
// const res = await app.table("User").data("age").max() // 查询最大值
|
||||||
// const res = await app.table("User").data("age").min() // 查询最小值
|
// const res = await app.table("User").data("age").min() // 查询最小值
|
||||||
|
|
||||||
|
const res = await app.jsonTasks([
|
||||||
|
{"table": "User", "where": {id: 999}, "find": "", "as": "user_data"},//as 设置结果别名
|
||||||
|
// {
|
||||||
|
// "table" : "UserInfo",
|
||||||
|
// "data" : {
|
||||||
|
// "phone": "13126000000",
|
||||||
|
// "uid": "$as.user_data.id",//根据别名 user_data 返回的结果中的id值作为数据保存
|
||||||
|
// }, "save": ""
|
||||||
|
// },
|
||||||
|
{
|
||||||
|
"table" : "UserInfo",
|
||||||
|
"where" : {
|
||||||
|
"uid": "$as.user_data.id",//根据别名 user_data 返回的结果中的id值作为条件查询
|
||||||
|
}, "find": ""
|
||||||
|
},
|
||||||
|
|
||||||
ctx.body = {}
|
// {"table": "User", "data": "age", "min": ""},
|
||||||
|
// {
|
||||||
|
// "as": "user_list", "jsonTasks": [ //整个任务设置别名
|
||||||
|
// {"setTransaction": ""}, // 开始事务
|
||||||
|
// {"table": "User", "data": "age", "sum": ""},
|
||||||
|
// {"table": "User", "data": "age", "max": ""},
|
||||||
|
// {"table": "User", "data": "age", "min": ""},
|
||||||
|
// {"commitTransaction": ""}, //提交事务
|
||||||
|
// ]
|
||||||
|
// },
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
ctx.body = {res}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
module.exports = {
|
||||||
|
doc : "用户信息表",
|
||||||
|
model: {
|
||||||
|
uid : {type: "STRING", comment: '用户id'},
|
||||||
|
phone: {type: "STRING", comment: '手机号', defaultValue: null,},
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
+88
-4
@@ -13,7 +13,7 @@ const EventEmitter = require('events');
|
|||||||
const schedule = require("node-schedule");
|
const schedule = require("node-schedule");
|
||||||
const Sequelize = require("sequelize");
|
const Sequelize = require("sequelize");
|
||||||
const Parameter = require('parameter');
|
const Parameter = require('parameter');
|
||||||
|
const objectPath = require("object-path");
|
||||||
module.exports = class Bamboo extends Koa {
|
module.exports = class Bamboo extends Koa {
|
||||||
constructor(agrs, options) {
|
constructor(agrs, options) {
|
||||||
super(options)
|
super(options)
|
||||||
@@ -58,7 +58,6 @@ module.exports = class Bamboo extends Koa {
|
|||||||
clearInterval(initInterval)
|
clearInterval(initInterval)
|
||||||
}
|
}
|
||||||
}, 1000)
|
}, 1000)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async initDB() {
|
async initDB() {
|
||||||
@@ -106,7 +105,7 @@ module.exports = class Bamboo extends Koa {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
registeredParameter(){
|
registeredParameter() {
|
||||||
this.parameter = new Parameter();
|
this.parameter = new Parameter();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -287,7 +286,8 @@ module.exports = class Bamboo extends Koa {
|
|||||||
if (validate) {
|
if (validate) {
|
||||||
console.error(validate);
|
console.error(validate);
|
||||||
this.errorException.ParameterException(validate);
|
this.errorException.ParameterException(validate);
|
||||||
}else{
|
}
|
||||||
|
else {
|
||||||
await obj.controller(ctx, this.application)
|
await obj.controller(ctx, this.application)
|
||||||
next();
|
next();
|
||||||
}
|
}
|
||||||
@@ -928,6 +928,88 @@ module.exports = class Bamboo extends Koa {
|
|||||||
return {count, rows: rows.map(item => item.dataValues)}
|
return {count, rows: rows.map(item => item.dataValues)}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* json批量任务
|
||||||
|
* @param {array} taskList json格式的任务列表.
|
||||||
|
*/
|
||||||
|
async jsonTasks(taskList) {
|
||||||
|
const res = []
|
||||||
|
for (let tk of taskList) {
|
||||||
|
const tkKeys = Object.keys(tk)
|
||||||
|
for (let key of tkKeys) {
|
||||||
|
if (key === "as") { continue; }
|
||||||
|
if (key === "where"||key === "data") {
|
||||||
|
const findJsonRes = this.findJsonValue(tk[key], (n) => {
|
||||||
|
if (typeof n === "string") {
|
||||||
|
// console.log(tk[key],n);
|
||||||
|
if (n.indexOf("$as") !== -1) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
})
|
||||||
|
if (findJsonRes) {
|
||||||
|
const jsonPath = findJsonRes.path.join(".")
|
||||||
|
const jsonPath2 = objectPath.get(tk[key], jsonPath);//$as.user_data.id
|
||||||
|
const asName = jsonPath2.split(".")[1]
|
||||||
|
const asFilter = res.filter(item => {
|
||||||
|
// console.log(Object.keys(item), asName);
|
||||||
|
return Object.keys(item)[0] === asName
|
||||||
|
})
|
||||||
|
// console.log(asFilter);
|
||||||
|
// console.log(jsonPath2);
|
||||||
|
if (asFilter.length > 0) {
|
||||||
|
// console.log(objectPath.get(asFilter[0], jsonPath2.split(".").slice(1).join("."))); //999
|
||||||
|
// console.log(jsonPath2.split(".").slice(1).join("."));//user_data.id
|
||||||
|
// console.log(tk[key]);//user_data.id
|
||||||
|
objectPath.set(tk[key], jsonPath, objectPath.get(asFilter[0], jsonPath2.split(".").slice(1).join(".")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log(tk[key]);
|
||||||
|
const tkRes = await this[key](tk[key])
|
||||||
|
if (
|
||||||
|
key === "save" ||
|
||||||
|
key === "count" ||
|
||||||
|
key === "sum" ||
|
||||||
|
key === "max" ||
|
||||||
|
key === "min" ||
|
||||||
|
key === "find" ||
|
||||||
|
key === "findAll" ||
|
||||||
|
key === "findOrCreate" ||
|
||||||
|
key === "jsonTasks" ||
|
||||||
|
key === "findAndCountAll"
|
||||||
|
) {
|
||||||
|
console.log(tk["as"]);
|
||||||
|
res.push(tk["as"] ? {[tk["as"]]: tkRes} : tkRes)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
//深度遍历JSON,搜索值
|
||||||
|
findJsonValue(n, value, path) {
|
||||||
|
if (n === value || (xe.isFunction(value) && value(n))) {
|
||||||
|
return {value: n, path}
|
||||||
|
}
|
||||||
|
path = path || []
|
||||||
|
// 获取所有的子节点,并遍历
|
||||||
|
if (typeof n ==="object") {
|
||||||
|
const nkeys = Object.keys(n)
|
||||||
|
for (let k of nkeys) {
|
||||||
|
// concat() 方法用于连接两个或多个数组
|
||||||
|
const res = this.findJsonValue(n[k], value, path.concat(k));
|
||||||
|
if (res) {
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
get application() {
|
get application() {
|
||||||
return {
|
return {
|
||||||
config : this.config,
|
config : this.config,
|
||||||
@@ -961,6 +1043,8 @@ module.exports = class Bamboo extends Koa {
|
|||||||
findOrCreate : this.findOrCreate,
|
findOrCreate : this.findOrCreate,
|
||||||
findAndCountAll : this.findAndCountAll,
|
findAndCountAll : this.findAndCountAll,
|
||||||
resetDbData : this.resetDbData,
|
resetDbData : this.resetDbData,
|
||||||
|
jsonTasks : this.jsonTasks,
|
||||||
|
findJsonValue : this.findJsonValue,
|
||||||
//======= 简写函数
|
//======= 简写函数
|
||||||
// S: this.sqlite.models,
|
// S: this.sqlite.models,
|
||||||
// M: this.mysql.models,
|
// M: this.mysql.models,
|
||||||
|
|||||||
@@ -53,6 +53,7 @@
|
|||||||
"log4js": "^6.4.4",
|
"log4js": "^6.4.4",
|
||||||
"mysql2": "^2.3.3",
|
"mysql2": "^2.3.3",
|
||||||
"node-schedule": "^2.1.0",
|
"node-schedule": "^2.1.0",
|
||||||
|
"object-path": "^0.11.8",
|
||||||
"parameter": "^3.6.0",
|
"parameter": "^3.6.0",
|
||||||
"pm2": "^5.1.2",
|
"pm2": "^5.1.2",
|
||||||
"require-all": "^3.0.0",
|
"require-all": "^3.0.0",
|
||||||
|
|||||||
Reference in New Issue
Block a user