npx sequelize-cli model:generate --name Posts --attributes user_id:integer,message:text,total_comments:integer
Posts.belongsTo(models.Users, { foreignKey: { name: "user_id", allowNull: false }, onDelete: "CASCADE" });
특정 유저가 쓴 글을 Posts테이블에 저장한다
npx sequelize-cli model:generate --name Posts_comments --attributes user_id:integer,post_id:integer,comment:text
Posts_comments.belongsTo(models.Users, { foreignKey: { name: "user_id", allowNull: false }, onDelete: "CASCADE" });
Posts_comments.belongsTo(models.Posts, { foreignKey: { name: "post_id", allowNull: false }, onDelete: "CASCADE" });
특정 유저가 쓴 댓글을 Posts_comments 테이블에 저장한다,
같은 post_id의 갯수를 세어 Posts 테블의 total_comments에 전달하여 저장한다
Users : Posts = 일 : 다
models/Users
static associate(models) { Users.hasMany(models.Posts, { foreignKey: "user_id" }) }
models/Posts
static associate(models) { Posts.belongsTo(models.Users, { foreignKey: { name: "user_id", allowNull: false }, onDelete: "CASCADE" }); }
const postsData = await Posts.findAll({
attributes: [
"id",
"user_id",
"message",
"total_comments",
],
include: [
{ model: Users, attributes: ["id"] }
]
attributes로 찾고 include로 연결
include - 하위 테이블 조인
attributes - 해당 테이블에서 조회 하려는 컬럼 배열
일부 특성만을 select하려면 attributes 옵션을 사용하면된다
include는 어떤 컬럼을 포함할지를 제한해주는 옵션