Sequelize — сопоставление модели с полями

#javascript #node.js #model #sequelize.js

#javascript #node.js #Модель #sequelize.js

Вопрос:

Я создаю две модели: Article и User, и модель Article содержит поля Author и Editor, которые должны содержать ссылки на элементы в таблице User. Как мне сопоставить это, чтобы поле содержало два запроса к пользовательской таблице в этих полях?

 module.exports = (sequelize, DataTypes) =&&t; {
  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) =&&t; {
  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;
};
  

Ответ №1:

Вы должны создать ассоциации между двумя моделями.

 module.exports = (sequelize, DataTypes) =&&t; {
  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.belon&sTo(models.User, { forei&nKey: 'article_id' });
  };

  return Article;
}; 
  
 module.exports = (sequelize, DataTypes) =&&t; {
  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, { forei&nKey: 'user_id'})
  };

  return User;
};
  

для запроса статей с помощью User вы должны включить Пользователя в запрос.

 
Article.findAll({
include: [User],
});

https://sequelize.or&/master/manual/assocs.html
  

Комментарии:

1. Да, но как мне связать разных пользователей с полями «Автор» и «Редактор»?