当前位置: 首页 > 知识库问答 >
问题:

后遗症ES6模型方法不存在

狄奕
2023-03-14
'use strict';
const Sequelize = require("sequelize");

class Model extends Sequelize.Model {

  static init(sequelize, DataTypes) {
    return super.init(
      {
        // properties
      },
      { sequelize }
    );
  }

  static associate(models) {
  }


  async modelMethod() {

  }

}

module.exports = Model;
let modelClass = require('../models/' + modelFile);

let model = modelClass.init(sequelize, Sequelize);

然后在控制器文件中调用该模型作为控制器的属性

async controllerMethod(req, res) {
    let info = await this.model.modelMethod();
    res.send(info);
}

我收到的错误-

TypeError:this.model.modelMethod不是Controller.ControllerMethod(/usr/app/controllers/controller.js:83:41)位于Layer.Handle[as handle_request](/usr/app/node_modules/express/lib/router/Layer.js:95:5)位于next(/usr/app/node_modules/express/lib/router/Layer.js:137:13)位于:16:23)在promise._settlepromiseFromHandler(/usr/app/node_modules/bluebird/js/release/promise.js:512:31)在promise._settlepromise(/usr/app/node_modules/bluebird/js/release/promise.js:569:18)在promise._settlepromise0(/usr/app/node_modules/bluebird/js/release/promise.js:614:10)在

尝试输出类的方法会得到这样的结果-

console.log(Object.getOwnPropertyNames(this.model));


[ 'length',
  'prototype',
  'init',
  'associate',
  'name',
  'sequelize',
  'options',
  'associations',
  'underscored',
  'tableName',
  '_schema',
  '_schemaDelimiter',
  'rawAttributes',
  'primaryKeys',
  '_timestampAttributes',
  '_readOnlyAttributes',
  '_hasReadOnlyAttributes',
  '_isReadOnlyAttribute',
  '_dataTypeChanges',
  '_dataTypeSanitizers',
  '_booleanAttributes',
  '_dateAttributes',
  '_hstoreAttributes',
  '_rangeAttributes',
  '_jsonAttributes',
  '_geometryAttributes',
  '_virtualAttributes',
  '_defaultValues',
  'fieldRawAttributesMap',
  'fieldAttributeMap',
  'uniqueKeys',
  '_hasBooleanAttributes',
  '_isBooleanAttribute',
  '_hasDateAttributes',
  '_isDateAttribute',
  '_hasHstoreAttributes',
  '_isHstoreAttribute',
  '_hasRangeAttributes',
  '_isRangeAttribute',
  '_hasJsonAttributes',
  '_isJsonAttribute',
  '_hasVirtualAttributes',
  '_isVirtualAttribute',
  '_hasGeometryAttributes',
  '_isGeometryAttribute',
  '_hasDefaultValues',
  'attributes',
  'tableAttributes',
  'primaryKeyAttributes',
  'primaryKeyAttribute',
  'primaryKeyField',
  '_hasPrimaryKeys',
  '_isPrimaryKey',
  'autoIncrementAttribute',
  '_scope',
  '_scopeNames' ]

共有1个答案

经俊茂
2023-03-14

看了曼尼什的评论后,我决定重新尝试一下。

显然,for instance方法的工作方式是在调用.init方法后初始化模型。

所以-

let model = ModelClass.init(sequelize, Sequelize);
model = new model();
 类似资料:
  • 我有以下问题,我有2个模型:客户端 和性别: 我的ClientController: 但我又想到了以下几点: 节点./bin/www OBS:在与透视表的N:m关系中,一切正常,有人能帮我吗?

  • 我不明白为什么sequelize会生成这个专栏。 错误有: 未处理的拒绝SequelizeDatabaseError:列“PermissionID”不存在于Query.FormatError(/Home/Baptiste/IUT2/Projets3/Code/M3301/Node_Modules/Sequelize/lib/Dialects/Postgres/Query.js:366:16)的/H

  • 我正在尝试使用squeelize orm将SQL Server与node.js一起使用。但我一直收到“未找到主机”错误: HostNotFounderRror[SequelizeHostNotFounderRror]:无法连接到LocalHost//SQLExPress:1433-getaddrinfo ENOTFOUND LocalHost//SQLExPress 无法连接到localhost/

  • 我有一个节点js服务器,它正在使用Sequelize创建和删除数据库。当我在“users”表中创建新用户时,查询正常运行,服务器返回响应。但当我试图从“users”表中删除用户时,查询运行但未解析Promission,因此我没有得到服务器的响应。下面是我的代码: 我在控制台中看到的内容: 过了一会儿: 我也删除了其他表中的内容,并且它们都起作用了,所以看起来Users表有些特殊。问题是,当我查看数

  • 我在实现下面的代码时失败了。“required”是一个用于内部连接的关键字,但如果我们保留,它就不起作用。 如果不保持必需,它将在项目和承包商上创建一个左外部联接。建议我为上面的Senario提供一个示例。

  • 我想知道使用Sequelize执行此请求所要编写的代码: