【问题标题】:Sequelize - TypeError: Cannot read property 'define' of undefinedSequelize - TypeError:无法读取未定义的属性“定义”
【发布时间】:2019-10-19 02:29:21
【问题描述】:

编辑:我的代码中有一行不在我的示例中,它已被添加并标有注释。

我正在为一个新项目设置服务器并尝试使用 Sequelize 自 v5 以来的第一次。运行我的服务器时,会引发此错误。

/Users/me/dev/projects/my-project/node_modules/sequelize/lib/model.js:730
    options = Utils.merge(_.cloneDeep(globalOptions.define), options);
                                                    ^

TypeError: Cannot read property 'define' of undefined
    at Function.init (/Users/me/dev/projects/my-project/node_modules/sequelize/lib/model.js:730:53)
    at Object.<anonymous> (/Users/me/dev/projects/my-project/src/server/db/models/user.js:16:6)
    at Module._compile (internal/modules/cjs/loader.js:736:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:747:10)
    ...

在调用我的模型定义初始化时出现错误:

const sequelize = require("../_db");

...

console.log('this runs');

class User extends Sequelize.Model {} // edit: this line was here
User.init(
  {
    avatar: {
      default: {
        type: Sequelize.URL,
        value: defaultAvatar
      },
      type: Sequelize.STRING
    },
    email: {
      allowNull: false,
      type: Sequelize.STRING,
      unique: true
    },
    id: {
      defaultValue: Sequelize.UUIDV1,
      primaryKey: true,
      type: Sequelize.UUID
    },
    name: {
      type: Sequelize.STRING
    },
    password: {
      allowNull: false,
      get() {
        return () => this.getDataValue("password");
      },
      type: Sequelize.STRING
    },
    salt: {
      get() {
        return () => this.getDataValue("salt");
      },
      type: Sequelize.STRING
    }
  },
  { sequelize, modelName: "user" }
);

console.log('this doesn't);

这对我来说很神秘,我不太确定可能出了什么问题。

【问题讨论】:

    标签: javascript node.js sequelize.js


    【解决方案1】:

    您需要包含用户的类定义。 我在您提供的代码中看不到它。 这可以解释为什么错误说它来自“未定义”

    const Model = Sequelize.Model;    
    class User extends Model {}
    

    你可以这样做:

    class User extends Sequelize.Model {}
    

    请看这里: https://sequelize.org/master/manual/models-definition.html

    此外,您似乎正在使用 Sequelize 的默认模型加载器,您需要在

    中定义该模型
    module.exports = (sequelize, DataTypes) => {
      const User = sequelize.define("User", {
    
      });
    
      return User
    }; 
    

    【讨论】:

    • 这是我的错,我不知何故在我的问题中遗漏了那行代码,但我确实有 class User extends Sequelize.Model {} 存在。然而,导出我的模型的方法似乎可以解决问题。
    猜你喜欢
    • 2016-12-11
    • 2016-01-10
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    • 2019-10-22
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多