У меня есть простые модели продолжения, как показано ниже.

// user.js
module.exports = function(sequelize, DataTypes) {
  const user = sequelize.define(
    "User",
    {
      name: {
        field: "name",
        type: DataTypes.STRING(50),
        unique: true,
        allowNull: false
      },
      uid: {
        field: "uid",
        type: DataTypes.STRING(50),
        allowNull: false
      }
    },
    {
      freezeTableName: true,

      tableName: "user"
    }
  );
  user.associate = function(models) {
    user.hasMany(models.friend, {
      foreignKey: "uid"
    });
  };

  return user;
};

И есть другая модель.

// friend.js 
module.exports = function(sequelize, DataTypes) {
  const friend = sequelize.define(
    "Friend",
    {
      uid: {
        field: "uid",
        type: DataTypes.STRING(50),
        allowNull: false
      },
      jsonId: {
        field: "json-id",
        type: DataTypes.STRING(50),
        allowNull: true
      },
      nlpId: {
        field: "nlp-id",
        type: DataTypes.STRING(50),
        allowNull: true
      }
    },
    {

      freezeTableName: true,

      tableName: "friend"
    }
  );
  friend.associate = function(models) {
    friend.belongsTo(models.user, { foreignKey: "uid" });
  };

  return friend;
};

И есть index.js. Когда я запускаю секвенирование, это выдает ошибку типа «Ошибка: Friend.belongsTo вызывается чем-то, что не является подклассом Sequelize.Model».
Не могли бы вы посоветовать какой-нибудь совет по этой проблеме? Большое спасибо за то, что прочитали это.

db.user = require('./user')(sequelize, Sequelize);
db.friend = require('./friend')(sequelize, Sequelize);
0
DD DD 12 Ноя 2019 в 19:44
Подумайте, что это происходит, потому что вы этого требуете, потому что ваша модель не определена в первом такте процесса, когда все загружается, но когда вы вызываете ее, используя требование, это означает, что ваши модели еще не определены. Попробуйте определить свою модель без запроса, просто определите их в каком-нибудь файле и подключите эти файлы с помощью import './models/users'
 – 
Medet Tleukabiluly
12 Ноя 2019 в 19:47

1 ответ

Запись в пользовательскую модель

User.associate = models => {
        User.hasMany(models.Friend, {
            as: 'friends',
            foreignKey: 'userId'
        });
    };

Напиши другу модель

Friend.associate = models => {
        Friend.belongsTo(models.User, {
            as: 'friend',
            foreignKey: 'userId'
        });
    };
1
Artash Mardoyan 14 Янв 2020 в 17:05