knex - 原始查询执行 - 如何获取数据库结果以及数据类型
knex - Raw query execute - how to get the db result along with data type
在使用 knex (oracle) npm 执行原始查询时,如何获取每一列的数据类型以及结果。
select name,age from customers;
当我们使用 nodejs 将其作为原始查询执行时,我们可以获得选定的列作为数组结果。
rows:[{name: 'SAM', age: 35},{name:'IMRAN',age:25}]
我需要数据以及每一列的数据类型以及原始查询的结果。
预期结果:
{ "result": { "rows": [{ "name": "SAM", "age": 35 }, { "name":
"IMRAN", "age": 25 }], "columns_details": { "name": "varchar 2(32)",
"age": "number(2)" } } }
是否有任何选项可用于获得上述结果?请建议我获得此要求。
提前致谢。
对于 knex.raw
查询,某些驱动程序可能 return 还提供数据类型信息。不过,Knex 并未为此提供任何特殊支持,因此您需要查看 node-oracledb 文档,了解如何获取该列元数据。
我 运行 使用 postgres 作为数据库遇到了同样的问题。 SELECT
查询的数据库结果位于从 .raw()
返回的 .rows
键中
另一个问题是原始查询不会自动 camelCase 结果,所以我也不得不处理它。
我最终为 运行 原始查询创建了一个小的异步实用程序函数,提取结果,camelCase 键。
import { camelCase, mapKeys } from 'lodash';
export const rawQuery = async (query) => {
const result = await knex.raw(query);
return result && result.rows
? result.rows.map((el) => mapKeys(el, (_, key) => camelCase(key)))
: [];
};
参数 query
是一个包含任意 SQL SELECT 查询的字符串。此函数不允许将变量传递到查询中,但这将是一个简单的扩展。
在使用 knex (oracle) npm 执行原始查询时,如何获取每一列的数据类型以及结果。
select name,age from customers;
当我们使用 nodejs 将其作为原始查询执行时,我们可以获得选定的列作为数组结果。
rows:[{name: 'SAM', age: 35},{name:'IMRAN',age:25}]
我需要数据以及每一列的数据类型以及原始查询的结果。
预期结果:
{ "result": { "rows": [{ "name": "SAM", "age": 35 }, { "name": "IMRAN", "age": 25 }], "columns_details": { "name": "varchar 2(32)", "age": "number(2)" } } }
是否有任何选项可用于获得上述结果?请建议我获得此要求。
提前致谢。
对于 knex.raw
查询,某些驱动程序可能 return 还提供数据类型信息。不过,Knex 并未为此提供任何特殊支持,因此您需要查看 node-oracledb 文档,了解如何获取该列元数据。
我 运行 使用 postgres 作为数据库遇到了同样的问题。 SELECT
查询的数据库结果位于从 .raw()
.rows
键中
另一个问题是原始查询不会自动 camelCase 结果,所以我也不得不处理它。
我最终为 运行 原始查询创建了一个小的异步实用程序函数,提取结果,camelCase 键。
import { camelCase, mapKeys } from 'lodash';
export const rawQuery = async (query) => {
const result = await knex.raw(query);
return result && result.rows
? result.rows.map((el) => mapKeys(el, (_, key) => camelCase(key)))
: [];
};
参数 query
是一个包含任意 SQL SELECT 查询的字符串。此函数不允许将变量传递到查询中,但这将是一个简单的扩展。