Я новичок в nodejs Development, и в настоящее время я занимаюсь работой CRUD на моем postgresql. Я использовал Objection.js для создания ORM и Model. Я следую некоторым кодам из документов и редактирую необходимые строки, но на самом деле я не добился успеха, вместо этого он возвращает эту ошибку:
builder.knex(...). queryBuilder не является функцией
Я следую за шаблоном MVC, поэтому я разделяю файлы в соответствии с ним.
Мой контроллер:
'use strict';
const Todo = require('./../models/Todo');
class TodoController {
createTodo() {
Todo
.query()
.insert({
'title': 'asdasdasda',
'description': 'sdasdasdasdasdsad',
'date': '2017-12-12',
'isActive': true,
})
.then(name => {
console.log(name.description);
})
.catch(err => {
console.log(err);
});
}
}
module.exports = TodoController;
Схема Knex:
knex.schema.createTableIfNotExists('todo', (table) => {
table.increments();
table.string('title', 255).notNullable();
table.text('description').notNullable();
table.boolean('isActive').defaultTo('false');
table.datetime('date').notNullable();
table.timestamp('createdAt').defaultTo(knex.fn.now());
})
Модель:
'use strict';
const { Model } = require('objection');
class Todo extends Model {
static get tableName() {
return 'Todo';
}
}
module.exports = Todo;
server.js:
...
const KnexConfig = require('./knexfile');
const { Model } = require('objection');
...
...
Model.knex(KnexConfig.development);
Надеюсь, кто-то может вести меня, я все еще новичок на узлах
Похоже, вы пытаетесь передать объект конфигурации knex в Model.knex()
тогда как вам нужно передать фактический экземпляр knex.
На server.js:
const { Model } = require('objection');
const knex = require('knex');
const KnexConfig = require('./knexfile');
Model.knex(knex(KnexConfig.development);
Это сообщение об ошибке появляется каждый раз, когда экземпляр knex, переданный объекту Objection.js, не является тем, что должно быть.