【问题标题】:How to use Sequelize belongsTo如何使用 Sequelize belongsTo
【发布时间】:2020-01-14 22:05:27
【问题描述】:

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

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

【问题讨论】:

  • 认为发生这种情况是因为您需要它,因为您的模型没有在所有内容加载时的第一个进程滴答声中定义,但是当您使用 require 调用它时,这意味着您的模型尚未定义。尝试在不需要的情况下定义您的模型,只需在某个文件中定义它们,然后使用 import './models/users' 连接这些文件

标签: node.js sequelize.js


【解决方案1】:

写入用户模型

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

给朋友模型写信

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

【讨论】:

    猜你喜欢
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 2017-06-08
    • 2016-04-06
    • 2019-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多