如何让knex使用alasql作为自定义方言
How to make knex use alasql as a custom dialect
我正在尝试配置 knex,以便我可以 运行 针对测试数据库进行播种和迁移以进行集成测试。我选择了 alasql 并找到了一些资源 here and here suggesting this is possible. I'm using the knex-alasql 模块及其设置说明。由于我正在设置它以进行播种,因此我在位于应用程序根目录中的 knexfile.js
文件中进行配置。但是,我一直 运行 陷入这个错误。
我认为这与 knex 如何将客户端密钥解析为可用方言有关。我的假设是,这适用于较旧版本的 knex,但不适用于我使用的当前版本 0.15.2
我可以 运行 集成测试的一些关于变通方法或更好的内存数据库的见解将是可以接受的答案。
在
中描述了如何创建自定义方言的一些帮助
如果您像这样配置 knex,SQlite 将支持内存数据库
const knexSqlite = Knex({
client: 'sqlite',
connection: ':memory:'
});
但是出于各种原因,通常我不建议使用不同的数据库进行测试和实际应用程序。主要是因为您不知道您的代码是否真的适用于真实数据库,并且您需要限制只使用测试数据库和真实数据库引擎支持的那些数据库功能。
我正在尝试配置 knex,以便我可以 运行 针对测试数据库进行播种和迁移以进行集成测试。我选择了 alasql 并找到了一些资源 here and here suggesting this is possible. I'm using the knex-alasql 模块及其设置说明。由于我正在设置它以进行播种,因此我在位于应用程序根目录中的 knexfile.js
文件中进行配置。但是,我一直 运行 陷入这个错误。
我认为这与 knex 如何将客户端密钥解析为可用方言有关。我的假设是,这适用于较旧版本的 knex,但不适用于我使用的当前版本 0.15.2
我可以 运行 集成测试的一些关于变通方法或更好的内存数据库的见解将是可以接受的答案。
在
中描述了如何创建自定义方言的一些帮助如果您像这样配置 knex,SQlite 将支持内存数据库
const knexSqlite = Knex({
client: 'sqlite',
connection: ':memory:'
});
但是出于各种原因,通常我不建议使用不同的数据库进行测试和实际应用程序。主要是因为您不知道您的代码是否真的适用于真实数据库,并且您需要限制只使用测试数据库和真实数据库引擎支持的那些数据库功能。