首页 > 解决方案 > 如何使用 Sequelize belongsTo

问题描述

我有如下简单的续集模型。

// 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。当我运行 sequelize 时,它​​给了我一个错误,例如“错误:Friend.belongsTo 调用的东西不是 Sequelize.Model 的子类”。
你能为这个问题推荐一些建议吗?非常感谢您阅读它。

db.user = require('./user')(sequelize, Sequelize);
db.friend = require('./friend')(sequelize, Sequelize);

标签: node.jssequelize.js

解决方案


写入用户模型

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

写给朋友模型

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

推荐阅读