DD DD
DD DD

Reputation: 1228

How to use Sequelize belongsTo

I have simple sequelize models like below.

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

And there is another model.

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

And there is index.js. When I run sequelize, it gives me an error like "Error: Friend.belongsTo called with something that's not a subclass of Sequelize.Model".
Could you recommend some advice for this problem? Thank you so much for reading it.

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

Upvotes: 0

Views: 1473

Answers (1)

Artash Mardoyan
Artash Mardoyan

Reputation: 131

Write to the user model

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

Write to the friend model

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

Upvotes: 1

Related Questions