mysql - 无法使用 knexjs 创建表
问题描述
我正在尝试使用 knexjs 创建一个表,但是它并没有创建表,我尝试观看教程,他正在迁移文件中创建表,但是我真的不喜欢这种方法,因为它不遵循 MVC ,因此我想知道如何让自己的方式发挥作用。
它目前没有创建表,但它没有抛出错误,我也想知道这是否会自动生成迁移或我应该为此做些什么,如果这是正确的做法,或者我是否应该实际上是只需将其全部写入迁移文件即可。
这是我的代码
class Tasks {
constructor() {
try {
db.schema.createTable('tasks', table => {
table.increments('id');
table.string('task', 128)
.notNullable();
table.boolean('completed');
table.timestamp('created_at').defaultTo(knex.fn.now());
});
} catch(err) {
console.error(err);
}
}
}
解决方案
您需要使用 执行查询生成器await
,但这不能在构造函数中完成。
因此,您要么需要创建一个单独的异步函数来运行表创建,要么只需触发查询并存储承诺
class Tasks {
constructor() {
try {
this.initPromise = db.schema.createTable('tasks', table => {
table.increments('id');
table.string('task', 128)
.notNullable();
table.boolean('completed');
table.timestamp('created_at').defaultTo(knex.fn.now());
}).then();
} catch(err) {
console.error(err);
}
}
}
推荐阅读
- android - 使用 Log for Volley Post 方法
- javascript - 在 d3 条形图中自定义网格线
- python - ModuleNotFoundError:没有名为“projeler_ile_python”的模块
- javascript - 如果我从服务器请求数据,“ComponentDidMount”钩子会触发内存泄漏
- python-3.x - 从 python 生成 Faker 数据并将其加载到 BigQuery 嵌套表中
- c - 编码/解码程序的逻辑错误 (C)
- javascript - 克隆和换行时如何防止单词溢出?
- javascript - 以角度 8 加载子组件时更改父组件高度样式
- python - 运行进程如何在python中动态重新加载新的lib文件代码?
- python - 如何计算神经网络模型中的准确率、召回率和 F1 分数?