Flow 在 knex 上找不到架构 属性
Flow cannot find schema property on knex
我正在开发一个使用 knex 进行数据库连接的项目。我也在使用流程进行打字。我正在尝试按如下方式连接到数据库:
const db = knex({
client: 'mysql',
connection: {
host: containerized() ? 'database' : process.env.DB_URL || 'localhost',
user: process.env.DB_USER || 'user',
password: process.env.DB_PASSWORD || 'password',
database: process.env.DB_DATABASE || 'database',
},
});
其中 db 的类型为 Knex$Knex
。我尝试设置数据库:
export function init(): Promise<Knex$Knex<*>> {
return new Promise((resolve, reject) => {
PromiseReduce([
() => db.schema.hasTable('users').then((exists) => {
if (!exists) {
return db.schema.createTable('users', (table) => {
...
});
}
return null;
}),
...
]).then(resolve).catch(reject);
}).then(() => db);
}
这在 运行 时一切正常,但流程出错,说 db.schema
不是 Knex$Knex
的 属性;并查看类型声明,是这样的。是否有更好的方法来执行此操作,或者仅仅是流声明错误的情况?
这是因为 knex v0 的流类型定义。14.x 不包括模式的类型。
通过在 Knex$Knex<R>
class.
的声明中添加 schema: Object
可以在本地快速修复错误
要解决此问题,需要正确键入 knex 的架构并将其添加到流类型存储库中。
我正在开发一个使用 knex 进行数据库连接的项目。我也在使用流程进行打字。我正在尝试按如下方式连接到数据库:
const db = knex({
client: 'mysql',
connection: {
host: containerized() ? 'database' : process.env.DB_URL || 'localhost',
user: process.env.DB_USER || 'user',
password: process.env.DB_PASSWORD || 'password',
database: process.env.DB_DATABASE || 'database',
},
});
其中 db 的类型为 Knex$Knex
。我尝试设置数据库:
export function init(): Promise<Knex$Knex<*>> {
return new Promise((resolve, reject) => {
PromiseReduce([
() => db.schema.hasTable('users').then((exists) => {
if (!exists) {
return db.schema.createTable('users', (table) => {
...
});
}
return null;
}),
...
]).then(resolve).catch(reject);
}).then(() => db);
}
这在 运行 时一切正常,但流程出错,说 db.schema
不是 Knex$Knex
的 属性;并查看类型声明,是这样的。是否有更好的方法来执行此操作,或者仅仅是流声明错误的情况?
这是因为 knex v0 的流类型定义。14.x 不包括模式的类型。
通过在 Knex$Knex<R>
class.
schema: Object
可以在本地快速修复错误
要解决此问题,需要正确键入 knex 的架构并将其添加到流类型存储库中。