knex.jsを使用する一般的な方法は、移行を作成してスキーマを定義し、通常のnode.jsコードでスキーマに挿入することです。knex.jsは移行/シードなしで使用できますか?このknex.jsコードに問題がありますか?
移行を使用しない方法はありますか?通常のnode.jsコードからknex.schema.createTable(...)
関数を使用できますか?このようなことに関する文書はありますか?
EDIT:私は正常なコードベースの中からknex.schema.createTable(...)
の機能を実行できないと思ったので、元々この質問を書いていました。今では、どのコードでもknexを正しく使うことはできないようです。 SQLite3データベースのスキーマを生成するためにマイグレーションを使用しても機能しますが、移行やその他の方法ではデータの挿入や照会ができないようです。
マイ移行ファイル:
exports.up = function(knex, Promise) {
return Promise.all([
knex.schema.createTableIfNotExists('test', function(table){
console.log("creating user table");
table.increments('id');
table.text('test');
})
]);
};
exports.down = function(knex, Promise) {
return Promise.all([
knex.schema.dropTableIfExists('test')
]);
};
knexfile.js:
module.exports = {
development: {
client: "sqlite3",
connection: {
filename: "devel.db"
},
useNullAsDefault: true
},
deployment: {
client: "sqlite3",
connection: {
filename: "deploy.db"
},
useNullAsDefault: true
}
};
そして、私が書いたモカ/チャイ試験:
const chai = require("chai");
var knex = require("knex")({ client: "sqlite3", connection: { filename: "devel.db" }, useNullAsDefault: true });
var expect = chai.expect;
// The tests.
describe("db",()=> {
it("Simple connect, query, and destroy.",()=> {
knex('test').insert({ test: 'wow' })
.catch(function(e){
console.error(e);
});
});
});
DBが存在する限り、必要に応じて(knexでの移行、liquibaseでの移行、不可能な作業など)、それを行うことができます。 – ssube