|
@ -70,27 +70,42 @@ function searchMeta(opts) { |
|
|
// 下载表数据
|
|
|
// 下载表数据
|
|
|
function getTableData(opts) { |
|
|
function getTableData(opts) { |
|
|
return async function (ctx, next) { |
|
|
return async function (ctx, next) { |
|
|
|
|
|
|
|
|
const models = ctx.fs.dc.models; |
|
|
|
|
|
try { |
|
|
try { |
|
|
|
|
|
const models = ctx.fs.dc.models; |
|
|
const { id } = ctx.query; |
|
|
const { id } = ctx.query; |
|
|
const metaData = await models.MetadataDatabase.findOne({ where: { id: id } }) |
|
|
const metaData = await models.MetadataDatabase.findOne({ where: { id: id } }) |
|
|
let rslt = [], metaDataChildren = [] |
|
|
let rslt = [], metaDataChildren = [] |
|
|
if (metaData && metaData.datasourceConfig) { |
|
|
const { dbConfig } = opts; |
|
|
metaDataChildren = await models.MetadataDatabase.findAll({ where: { parent: id, type: '字段' } }) |
|
|
|
|
|
|
|
|
metaDataChildren = await models.MetadataDatabase.findAll({ where: { parent: id, type: '字段' } }) |
|
|
|
|
|
if (metaData.datasourceConfig) { |
|
|
let { user, host, database, password, port } = metaData.datasourceConfig; |
|
|
let { user, host, database, password, port } = metaData.datasourceConfig; |
|
|
const pool = new Pool({ |
|
|
const pool = new Pool({ user: user, host: host, database: database, password: password, port: port }) |
|
|
user: user, |
|
|
|
|
|
host: host, |
|
|
|
|
|
database: database, |
|
|
|
|
|
password: password, |
|
|
|
|
|
port: port, |
|
|
|
|
|
}) |
|
|
|
|
|
const client = await pool.connect() |
|
|
const client = await pool.connect() |
|
|
|
|
|
|
|
|
const tableName = metaData.name; |
|
|
const tableName = metaData.name; |
|
|
const ress = await client.query(`SELECT * from "${tableName}"`, []) |
|
|
const ress = await client.query(`SELECT * from "${tableName}"`, []) |
|
|
rslt = ress.rows |
|
|
rslt = ress.rows |
|
|
|
|
|
} else { |
|
|
|
|
|
let databaseFind = await models.MetadataDatabase.findOne({ where: { id: metaData.parent, type: '库' } }) |
|
|
|
|
|
if (databaseFind) { |
|
|
|
|
|
let dbconfigObj = { |
|
|
|
|
|
user: dbConfig.split('/')[0], |
|
|
|
|
|
host: dbConfig.split('/')[2], |
|
|
|
|
|
database: databaseFind.code, |
|
|
|
|
|
password: dbConfig.split('/')[1], |
|
|
|
|
|
port: dbConfig.split('/')[3], |
|
|
|
|
|
} |
|
|
|
|
|
let { user, host, database, password, port } = dbconfigObj; |
|
|
|
|
|
const pool = new Pool({ user: user, host: host, database: database, password: password, port: port }) |
|
|
|
|
|
const client = await pool.connect() |
|
|
|
|
|
|
|
|
|
|
|
const tableName = metaData.name; |
|
|
|
|
|
const ress = await client.query(`SELECT * from "${tableName}"`, []) |
|
|
|
|
|
rslt = ress.rows |
|
|
|
|
|
} else { |
|
|
|
|
|
rslt = [] |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
ctx.status = 200; |
|
|
ctx.status = 200; |
|
@ -98,7 +113,7 @@ function getTableData(opts) { |
|
|
} catch (error) { |
|
|
} catch (error) { |
|
|
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); |
|
|
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); |
|
|
ctx.status = 200; |
|
|
ctx.status = 200; |
|
|
ctx.body = { message: '连接失败' } |
|
|
ctx.body = { message: '连接失败', rslt: [], metaDataChildren: [] } |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|