Knex.js 与 Joi 绑定

Knex.js with Joi binding

我将 Knex.js(连同 Bookshelf.js)与 PostreSQL 数据库一起使用,我正在尝试 "extract" SQL 模式为了将它与 Joi or Checkit.

之类的东西一起使用

这里只是一个简单的例子:
用 knex 编写的模式:

return knex.schema.createTable('users', table => {
  table.string('username').notNullable()
  table.string('password')
})

以及我希望自动获取的内容:

const schema = Joi.object().keys({
  username: Joi.string().required(),
  password: Joi.string()
})

重点是避免两次编写模式并以编程方式验证对象,然后再将其传递给 bookshelf/knex。有没有内置的方法来做到这一点?或者任何最佳实践?

您需要手动执行此操作或编写自己的架构构建器来输出 Joi 架构和 knex 迁移...

通常人们只是在 knex 中单独进行迁移,然后更新 Joi 验证以与更改后的数据库模式同步。

如果人们正在寻找与所询问的服务类似的服务。我刚刚发布了一个将 Joi 模式 转换为 SQL tableKnex[ 的库=20=].

https://github.com/Fantasim/joi-to-sql

目前,该库仅支持 MySQL 及其基本功能,但我计划添加更多功能,例如自动迁移(在 MySQL 上)。 如果您需要其他功能或其他数据库支持,欢迎拉取请求!