javascript - 序列化 - 类型错误 : Cannot read property 'define' of undefined

标签 javascript node.js sequelize.js

编辑:我的代码中存在一行,该行未在我的示例中添加,已添加并用注释标记。

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

/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);

这对我来说非常神秘,我不太确定出了什么问题。

最佳答案

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

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

关于javascript - 序列化 - 类型错误 : Cannot read property 'define' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58460033/

相关文章:

javascript - jQuery outerHeight() & height 在窗口调整为奇数像素时闪烁/失败

javascript - 如何动态设置div的值

node.js - Apache、 Node 、.htaccess

node.js - 序列化查询特定的belongsToMany关联

node.js - use_env_variable 在 sequelize 中返回 undefined

javascript - 回调方法中未定义 RequireJS 依赖项

javascript - 在 JavaScript 中访问对象的转义属性

sequelize.js - 如何知道sequelize js实例中的内置属性/方法是否覆盖?

javascript - 如何最好地编写这段代码,其中 JavaScript 中有这么多 if 条件?

javascript - 如何使用 MySQL 登录 ReactJS、NodeJS?