Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何使sequelize模型分离文件,但保持相同的sequelize连接_Node.js_Mariadb_Sequelize.js - Fatal编程技术网

Node.js 如何使sequelize模型分离文件,但保持相同的sequelize连接

Node.js 如何使sequelize模型分离文件,但保持相同的sequelize连接,node.js,mariadb,sequelize.js,Node.js,Mariadb,Sequelize.js,各位。我对使用nodejs的续集ORM非常陌生。 我刚刚分别为模型创建了两个文件,我还分离了sequelize.js以连接到数据库 问题是,当我在模型(文件)之间建立关联(自关联工作正常)时,出现了一个错误 ****“hasMany调用的对象不是Sequelize.Model的子类” 我试图解决这个问题,但直到我把每个模型都放在同一个文件中才起作用。因此,我意识到每个型号都必须使用通用的sequelize连接。 没有sequelize cli,有没有办法解决这个问题(我不想使用sequelize

各位。我对使用nodejs的续集ORM非常陌生。 我刚刚分别为模型创建了两个文件,我还分离了sequelize.js以连接到数据库

问题是,当我在模型(文件)之间建立关联(自关联工作正常)时,出现了一个错误 ****“hasMany调用的对象不是Sequelize.Model的子类”

我试图解决这个问题,但直到我把每个模型都放在同一个文件中才起作用。因此,我意识到每个型号都必须使用通用的sequelize连接。

没有sequelize cli,有没有办法解决这个问题(我不想使用sequelize cli) 下面是我的代码

非常感谢,

sequelize.js

const config = require("config");
const { Sequelize } = require("sequelize");

const sequelize = new Sequelize(
  config.get("database"),
  config.get("user"),
  config.get("cipher"),
  {
    dialect: "mariadb",
    timezone: "Asia/Bangkok",
  }
);

module.exports = sequelize;
user.js

const { DataTypes, Model } = require("sequelize");
const sequelize = require("./sequelize");
const Position = require("./position");

class User extends Model {}

User.init(
  {
    uuid: {
      type: DataTypes.UUID,
      allowNull: false,
      defaultValue: DataTypes.UUIDV4,
    },
    title: {
      type: DataTypes.STRING,
      allowNull: false,
    },
    firstname: {
      type: DataTypes.STRING,
      allowNull: false,
    },
    lastname: {
      type: DataTypes.STRING,
      allowNull: false,
    },
    phone: {
      type: DataTypes.STRING,
      allowNull: true,
    },
    email: {
      type: DataTypes.STRING,
      allowNull: true,
      validate: {
        isEmail: true,
      },
    },
    imgurl: {
      type: DataTypes.STRING,
      allowNull: true,
    },
    login: {
      type: DataTypes.STRING,
      allowNull: false,
    },
    passphase: {
      type: DataTypes.STRING,
      allowNull: false,
    },
    status: {
      type: DataTypes.INTEGER,
      allowNull: false,
      defaultValue: 1,
    },
  },
  {
    sequelize,
    modelName: "User",
    tableName: "users",
    timestamps: true,
  }
);

User.belongsToMany(User, {
  as: "CreatedUser",
  foreignKey: "user_id",
  through: "UserCreator",
});
User.belongsToMany(User, {
  as: "Creator",
  foreignKey: "creator_id",
  through: "UserCreator",
});

User.belongsToMany(User, {
  as: "ModifiedUser",
  foreignKey: "user_id",
  through: "UserModifier",
});
User.belongsToMany(User, {
  as: "Modifier",
  foreignKey: "modifier_id",
  through: "UserModifier",
});

User.belongsTo(Position);

module.exports = User;
position.js

const { DataTypes, Model } = require("sequelize");
const sequelize = require("./sequelize");
const User = require("./user");

class Position extends Model {}

Position.init(
  {
    uuid: {
      type: DataTypes.UUID,
      defaultValue: DataTypes.UUIDV4,
    },
    name: {
      type: DataTypes.STRING,
      allowNull: false,
    },
    status: {
      type: DataTypes.INTEGER,
      allowNull: false,
      defaultValue: 1,
    },
  },
  {
    sequelize,
    modelName: "Position",
    tableName: "postions",
    timestamps: true,
  }
);

Position.hasMany(User, {
  foreignKey: {
    type: DataTypes.UUIDV4,
    allowNull: false,
  },
});

module.exports = Position;

sequelize.authenticate()代码在哪里?它在另一个文件中。