Канонический способ использования knex.js, похоже, заключается в создании миграций для определения схемы, а затем вставки в указанную схему в обычный код node.js.Может ли knex.js использоваться без миграции/посева? Что-то не так с этим кодом knex.js?
Есть ли способ не использовать миграции? Могу ли я использовать функцию knex.schema.createTable(...)
из обычного кода node.js? Есть ли какая-либо документация по этому поводу?
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
}
};
и А/тест мокко Chai я написал:
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);
});
});
});
Несомненно. Вы можете сделать это, как вы хотите (миграции в knex, миграции в Liquibase, задачи в недоступном, что угодно), пока существует база данных. – ssube