使用 chatGPT 生成 Knex.js 代码

ai

Knex.js 是一个SQL语句构建器,

在已知 SQL 的情况下,可以使用 chatGPT,来反向生成 Knex.js 代码。

假设有如下的场景:

通过监控,日志等系统获取到SQL,

然后使用 chatGPT 生成对应的 Knex.js 代码,

如果这个SQL是本身用 Knex.js 生成的,

那么就可以对比审计原来的代码,

如果需要使用 Knex.js 重写此业务,

无需阅读 Knex.js 文档或者手动编码,

直接使用生成的代码即可。

使用举例:

chatGPT Generate Knexjs Code

示例 SQL

SELECT e.name
FROM employees e
JOIN departments d ON e.department_id = d.id
JOIN (
    SELECT department_id, AVG(salary) AS avg_salary
    FROM salaries
    GROUP BY department_id
) AS avg_salaries ON d.id = avg_salaries.department_id
JOIN salaries s ON e.id = s.employee_id
WHERE d.name = 'Engineering' AND s.salary > avg_salaries.avg_salary;

使用 Knex.js 编写上述 SQL 查询的生成代码如下:

const knex = require('knex')({
  client: 'your_database_client',
  connection: {
    // your database connection configuration
  }
});

knex.select('e.name')
  .from('employees as e')
  .join('departments as d', 'e.department_id', 'd.id')
  .join(knex.select('department_id', knex.raw('AVG(salary) as avg_salary')).from('salaries').groupBy('department_id').as('avg_salaries'), 'd.id', 'avg_salaries.department_id')
  .join('salaries as s', 'e.id', 's.employee_id')
  .where('d.name', 'Engineering')
  .andWhere('s.salary', '>', knex.raw('avg_salaries.avg_salary'))
  .then(rows => {
    console.log(rows);
  })
  .catch(err => {
    console.error(err);
  })
  .finally(() => {
    knex.destroy();
  });

记得替换 your_database_client 和连接配置与您的实际数据库信息相匹配。

参考 Reference:

https://knexjs.org

https://chat.openai.com