javascript - Objection.js - 查询生成器不是使用插入方法的函数

标签 javascript node.js postgresql objection.js

我是 nodejs 开发的新手,目前正在我的 postgresql 上练习 CRUD 操作。我将 Objection.js 用于 ORM 和模型制作。我遵循了文档中的一些代码并编辑了必要的行,但我实际上并没有成功,而是返回了这个错误:

builder.knex(...).queryBuilder is not a function

我遵循 MVC 模式,所以我根据它分隔文件。

我的 Controller :

'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;

服务器.js:

    ...
    const KnexConfig = require('./knexfile');
    const { Model } = require('objection');
    ...
    ...
    Model.knex(KnexConfig.development);

希望有人能指导我,我还是 nodejs 的新手

最佳答案

看起来您正在尝试将 knex 配置对象传递给 Model.knex() 而您需要传递实际的 knex 实例。

在 server.js 上:

const { Model } = require('objection');
const knex = require('knex');

const KnexConfig = require('./knexfile');

Model.knex(knex(KnexConfig.development));

只要传递给 Objection.js 的 knex 实例不是应该的,就会出现此错误消息。

关于javascript - Objection.js - 查询生成器不是使用插入方法的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47740398/

相关文章:

javascript - 如何在 JavaScript 中禁用右键单击?

javascript - 具有页面完整浏览器高度的开头部分,所有其他部分定义的高度。

html - 使用 Node、Express 和 EJS 压缩 HTML?

c# - 获取错误没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。”

postgresql - 无法使用 Golang Gorm 连接到 RDS Postgres

javascript - jQuery 的 $(selector).eq(index) 和 $(selector)[index] 是一样的吗?

javascript - 允许访客和站点成员使用 ajax、php/pdo、css、html 查看谁在线/登录

node.js - 错误 C2039: 'IsNearDeath' : 不是 'Nan::Persistent<v8::Object,v8::NonCopyablePersistentTraits<T>> 的成员

node.js - 由于服务器自动分配IP,客户端不断添加到套接字

sql - 我可以使用 SQL 语言插入以编程方式定义的 PostgreSQL 表吗?