【问题标题】:Sequelize - Map model to fieldsSequelize - 将模型映射到字段
【发布时间】:2020-08-10 16:14:55
【问题描述】:

我正在制作两个模型:Article 和 User,Article 模型包含 Author 和 Editor 字段,它们必须包含指向 User 表中项目的链接。如何映射它,以便该字段包含两个对这些字段中的 User 表的查找?

module.exports = (sequelize, DataTypes) => {
  const Article = sequelize.define('Article', {
    title: DataTypes.STRING,
    html: DataTypes.STRING,
    author: DataTypes.INTEGER,
    editor: DataTypes.INTEGER,
    deletedAt: DataTypes.DATE
  }, {});

  Article.associate = function(models) {
  };

  return Article;
}; 
module.exports = (sequelize, DataTypes) => {
  const User = sequelize.define('User', {
    username: DataTypes.STRING,
    password_hash: DataTypes.STRING,
    role: DataTypes.STRING,
    email: DataTypes.STRING,
    deletedAt: DataTypes.STRING
  }, {});

  User.associate = function(models) {
  };

  return User;
};

【问题讨论】:

    标签: javascript node.js model sequelize.js


    【解决方案1】:

    您必须在两个模型之间创建关联。

    module.exports = (sequelize, DataTypes) => {
      const Article = sequelize.define('Article', {
        title: DataTypes.STRING,
        html: DataTypes.STRING,
        author: DataTypes.INTEGER,
        editor: DataTypes.INTEGER,
        deletedAt: DataTypes.DATE
      }, {});
    
      Article.associate = function(models) {
        Article.belongsTo(models.User, { foreignKey: 'article_id' });
      };
    
      return Article;
    }; 
    
    module.exports = (sequelize, DataTypes) => {
      const User = sequelize.define('User', {
        username: DataTypes.STRING,
        password_hash: DataTypes.STRING,
        role: DataTypes.STRING,
        email: DataTypes.STRING,
        deletedAt: DataTypes.STRING
      }, {});
    
      User.associate = function(models) {
        User.hasMany(models.Articles, { foreignKey: 'user_id'})
      };
    
      return User;
    };
    

    要查询带有用户的文章,您必须在查询中包含用户。

    
    Article.findAll({
    include: [User],
    });
    
    https://sequelize.org/master/manual/assocs.html
    

    【讨论】:

    • 是的,但是如何将不同的用户关联到“作者”和“编辑”字段?
    猜你喜欢
    • 2019-10-27
    • 1970-01-01
    • 1970-01-01
    • 2022-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多